テーブル切捨てのtruncateと、条件無しでdeleteは、どちらも結果的にテーブルから全行削除される。しかし、両者の動作は異なるもので、想定される使い方も異なる。Oracleの運用ミス事例でもしばしば取り上げられる。システムはなぜダウンするのかのp.232「2つの削除コマンドの使い分けを誤る」など。 というわけで、実際にSQLを実行しながら両者の違いを見てみるが、使用ブロック数に着目しながら確認してみる。 環境 Oracle Database Express Edition 11g Release 2をCentOS 6.4 x86_64上で動作 Oracle SQL Developer 3.2 準備 このエントリ内で使用するクエリについて。 「テスト用のテーブル作成」と書いた場合、下記クエリを指す、とする。 drop table hoge purge; create table hog