delete和truncate的区别

MySQL中有两种删除表中记录的方法:

一种是delete from语句

一种是truncate table语句

相同点

delete from语句可以使用where对要删除的记录进行选择,并且支持ORDER BY和LIMIT子句,通过这两个子句,我们可以更好地控制要删除的记录。

而使用truncate table将删除表中的所有记录。因此,delete语句更灵活。

如果要清空表中的所有记录,可以使用下面的两种方法:

delete from tablename

truncate table tablename

其中第二条记录中的table是可选的。

如果delete不加WHERE子句,那么和truncate table是一样的。但是如果一个表中有自增字段,使用truncate table删除所有记录后,这个自增字段将起始值恢复成1。

区别

如果要删除表中的部分记录,只能使用delete语句:delete FROM table1 WHERE ***;

delete可以返回被删除的记录数,而truncate table返回的是0。

delete FROM table1 WHERE ***; 语句在执行时将扫描每一条记录,它的执行成本要比没有WHERE子句的delete大得多。

如果要删除表中的所有数据,建议使用truncate table, 尤其是表中有大量的数据, 使用truncate table是将表结构重新建一次速度要比使用delete from快很多,而delete from是一行一行的删除,速度很慢.

delete和truncate table的最大区别是delete可以通过WHERE语句选择要删除的记录。因为delete是一行一行的删除,所以执行得速度不快。而且还可以返回被删除的记录数。而truncate table无法删除指定的记录,而且不能返回被删除的记录;当表中有大量的数据时,它执行得非常快。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容