未だに迷う。
例えば、テーブル全件削除をしたいときは
delete * from tableA;
delete文なら、こうだし。
truncate tableA;
truncate文なら、こう。
削除条件を追加すると、こう。
delete * from tableA where name = 'あいうえお' ;
truncateでの削除条件は指定できない。
ただ、処理時間は基本的にtruncate文のほうが早い。
自分が認識しているdelete文との大きな違いは以下
- 実行時にトランザクションが確定する
※ロールバックが効かない - 条件指定不可
※全件削除のみ - deleteより実行が早い
こんな感じ。
一時的な使用のテーブルじゃない限り、truncateはやめておいたほうがいいかな。