从表中删除所有

时间:2010-06-08 20:12:26

标签: sql mysql ms-access optimization performance

什么更快?

DELETE * FROM table_name;

DELETE * FROM table_name where 1=1;

为什么?

truncate table是否可以访问?

6 个答案:

答案 0 :(得分:127)

TRUNCATE TABLE table_name

答案 1 :(得分:25)

这应该更快:

DELETE * FROM table_name;

因为RDBMS不必查看where是什么。

您应该可以使用 truncate

truncate table table_name

答案 2 :(得分:10)

2004年有一个mySQL bug report似乎仍有一定的效力。 似乎在4.x中,这是最快的:

DROP table_name
CREATE TABLE table_name

TRUNCATE table_name当时内部为DELETE FROM,没有任何性能提升。

这似乎已经改变了,但仅限于5.0.3及更年轻。来自错误报告:

  

[2005年1月11日16:10]MarkoMäkelä

     

我现在已经实现了快速TRUNCATE TABLE,它有望包含在MySQL 5.0.3中。

答案 3 :(得分:9)

这将删除表table_name

将其替换为表格的名称,该表格将被删除。

DELETE FROM table_name;

答案 4 :(得分:0)

TRUNCATE TABLE table_name

是一个DDL(Data Definition Language),可以删除所有数据,清理身份。 如果你想使用这个,你需要表中的DDL权限。

DDL 语句示例:CREATE、ALTER、DROP、TRUNCATE 等

DELETE FROM table_name / DELETE FROM table_name WHERE 1=1 (is the same)

是一种DML(Data Manipulation Language),可以删除所有数据。 DML 语句示例:SELECT、UPDATE 等

了解这一点很重要,因为如果应用程序在服务器上运行,那么当我们运行 DML 时就不会出现问题。但有时在使用 DDL 时,我们将不得不重新启动应用程序服务。我在 postgresql 中有过这样的经历。

问候。

答案 5 :(得分:-4)

您也可以使用truncate。

truncate table table_name;