より速いのは何ですか?
DELETE * FROM table_name;
または
DELETE * FROM table_name where 1=1;
どうして?
truncate table
はアクセスできますか?
TRUNCATE TABLE table_name
これはもっと速いはずです:
DELETE * FROM table_name;
rDBMSがwhere
を探す必要がないためです。
truncate
でも大丈夫です:
truncate table table_name
2004年から mySQLバグレポート がありますが、まだある程度の妥当性があるようです。 4.xでは、これが最速でした:
DROP table_name
CREATE TABLE table_name
TRUNCATE table_name
は内部的にDELETE FROM
でしたが、パフォーマンスは向上しませんでした。
これは変更されたようですが、5.0.3以降のみです。バグレポートから:
[2005年1月11日16:10] MarkoMäkelä
MySQL 5.0.3に含まれる予定の高速TRUNCATE TABLEを実装しました。
これにより、テーブルtable_name
が削除されます。
削除するテーブルの名前に置き換えます。
DELETE FROM table_name;