0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL DELETE 文とTRUNCATE 文の違い

Posted at

基本の違い

比較項目 DELETE TRUNCATE
操作内容 指定した条件の行を削除 テーブルの全行を削除
条件指定 WHERE 句で条件を指定可能 条件指定不可(全件削除)
トランザクション ロールバック可能(通常のDELETE) DBによるが、ほとんどの場合テーブル全体削除なので高速。DBによってはロールバック不可
パフォーマンス 遅い(行単位で削除、ログも生成) 速い(データページを丸ごと解放、ログが少ない)
トリガー 発火する(DELETE トリガー) 発火しないことが多い(DB依存)
ID(オートインクリメント) 通常は連番保持 DBによってはリセットされることがある(MySQLなど)

DELETE文

--条件付きで削除
DELETE FROM users
WHERE age < 20;

「20歳未満のユーザーだけ削除したい」など条件付きで使う。
トリガー発動やロールバック可能。

TRUNCATE文

TRUNCATE TABLE users;

「テーブル内をまっさらにしたい」場合に使う。
高速だが、WHEREで条件指定はできない。

注意点

TRUNCATE は高速だが注意

全データが消えるので、誤って実行すると復元が困難。

オートインクリメントもリセットされることがある。

DELETE は条件指定が可能

必要な行だけ消せる

ロールバックもできるので安全性高い

トリガーの扱い

DELETE トリガーは発動

TRUNCATE は発動しないことが多い(DB依存)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?