テーブル切捨ての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
![truncateとdeleteのちがいを使用ブロック数から見てみる - kagamihogeの日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/43f2f019129f6bbddbd11e8ad5b99aca09ce94ca/height=288;version=1;width=512/http%3A%2F%2Fecx.images-amazon.com%2Fimages%2FI%2F51yv-ajt3QL.jpg)