1

クエリ: Delete from test_table; (私は毎日実行する手順でこの削除コマンドを使用しています)

このテーブルには、scenario_id、item_id などの 2 つの列名が含まれています。これら 2 つの列は複合主キーです。したがって、各 scenario_id には 200 万の item_id があります。このテーブルをすばやく削除する方法。

4

2 に答える 2

1

テーブルを削除する最速の方法はDROP TABLE test_tableコマンドであり、コマンドを使用してテーブルを再作成しますCREATE TABLE...DROP TABLE...すぐにテーブルを削除します。実際には、テーブルをごみ箱に移動します。PURGE RECYCLEBINテーブルを完全に削除したい場合は、そうする必要があります。

テーブル内のデータを削除する他の方法は、 を使用することTRUNCATE TABLE...です。これは よりも少し遅くなりますがDROP TABLE...、 よりもはるかに高速ですDELETE FROM...。テーブルを切り捨てた後にデータをロールバックする方法がないため、使用するときは注意が必要ですTRUNCATE TABLE

于 2013-09-12T07:27:50.200 に答える
0
  • このテーブルを指している外部キーがあるかどうかを確認してください。存在する場合、これらの参照列にインデックスが存在する必要があります。そうしないと、参照整合性の維持に時間がかかります
  • (トランザクション) Oracle での削除は、本質的に低速です。削除されたデータは、UNDO テーブルスペース、REDO ログ、およびアーカイブされた REDO ログにコピーする必要があるため、簡単です。これは、オラクルがデータを保護する方法です。
  • 50% 以上のデータを削除する場合は、単純create new table as select * from old_table where ...に新しい古いデータをドロップして新しい名前を古い名前に変更すると、はるかに高速になります。
  • exchangingパーティション化されたテーブルのパーティションによって同様の目標を達成できます。
  • または、テーブルが適切に分割されている場合は、テーブルのパーティションを単純に削除できます
于 2013-09-12T08:23:28.680 に答える