katori.yusuke

2013.11.19

TRUNCATEとDELETEの違い

初めまして、香取です。
今年新卒で入社して、ソリューション案件と社内システムの開発をやらせて頂いています。

データを削除するときのTRUNCATEとDELETEの違いについて書こうと思います。

リリース前のテストデータを削除する場合などでテーブルデータを全て削除したい時があります。
あるテーブルの全てのデータを削除する場合に以下の方法があると思います。

TRUNCATE文

DELETE文

■TRUNCATE

■DELETE

DELETE文ではデータを一つ一つ削除するのに対しTRUNCATE文では

を行い、再度同じテーブルを作成するのでTRANCATEの方が高速です。
しかし、ログの取得やインデックス処理を行わないためデータを復元することが出来ません。

TRUNCATEだとAUTO_INCREMENTの値も削除されるが、DELETEだと保持されます。

■AUTO_INCREMENT
AUTO_INCREMENTだけを初期化したいのであれば、
以下のようにします。

リリース前のテストデータを削除するだけなら得られる結果に大差はないように感じますが
TRUNCATEとDELETEではこれだけ違いがあるようです。