テーブル内のすべてのレコードを高速に削除する際には、DELETE文ではなくTRUNCATE TABLEを使うことをおすすめします。
本記事ではTRUNCATE TABLE についての概要をまとめます。
TRUNCATE TABLE の使い方
構文
TRUNCATE TABLE テーブル名
TRUNCATE TABLE はWHEREでの条件指定ができません。テーブルのすべてのレコードを削除するためです。
また、TRUNCATE TABLE はトランザクションでの制御が可能です。ロールバックすれば削除を取り消すことができます。
DELETE と TRUNCATE TABLEの違い
速度
DELETE文では1件ずつ実行されるため、レコード数が多いほど時間がかかってしまいます。
一方で、TRUNCATE TABLEでは一括削除するためレコード数が多くても高速削除ができます。
IDENTITY
DELETE文ではレコードを削除しても、IDENTITYの値はリセットされません。
一方で、TRUNCATE TABLEではIDENTITYの値がリセットされます。
下記のSQLでIDENTITYの現在値を確認することができます。
SELECT IDENT_CURRENT('TEST') AS CurrentID
下記の画像のようにIDENTITYが3の状態でDELETE文を行ってもリセットは行われません。
TRUCATE TABLE を行うと、IDENTITYが1にリセットされます。