web-dev-qa-db-ja.com

テーブルからすべて削除

より速いのは何ですか?

DELETE * FROM table_name;

または

DELETE * FROM table_name where 1=1;

どうして?

truncate tableはアクセスできますか?

TRUNCATE TABLE table_name

133
Jaymz

これはもっと速いはずです:

DELETE * FROM table_name;

rDBMSがwhereを探す必要がないためです。

truncateでも大丈夫です:

truncate table table_name
28
Sarfraz

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を実装しました。

10
Pekka 웃

これにより、テーブルtable_nameが削除されます。

削除するテーブルの名前に置き換えます。

DELETE FROM table_name;
9