テーブルのデータを高速に削除する TRUNCATE TABLE文
TRUNCATE TABLE文は、すべての行を削除します。
同じように行を削除するDELETE文と違うのは、行を個別に削除するDELETEに比べて処理が高速に実行されることです。
すなわち、WHERE句を使って個別に削除ができない代わりに高速処理できるということです。
TRUNCATE TABLEの実行は、DDLに属します。
DDLは、基本自動的にコミットされるためロールバックができません。
実行する前にデータのバックアップするなどして慎重に実行してください。
TRUNCATE TABLEの構文
TRUNCATE TABLE テーブル名;
下のSQLは「TEST_TABLE」テーブルのデータを削除しています。
SQL> TRUNCATE TABLE TEST_TABLE; 表が切り捨てられました。
おまけ
TRUNCATEとDELETEの違いでよくあげられる点として、
「処理が高速」「全件削除のみ可能」「DDLだからロールバック不可」
ということをお伝えしてきたが、
それ以外にもハイウォータマーク(HWM)を変更することができます。
ハイウォータマークというのは、セグメント内の位置を示しており、
その位置を超えるデータブロックは使用されていないということを表しています。
↓↓↓HWMについて記事書きました\(^o^)/
ここを参照
コメント