Mysql清空表(truncate)与删除表中数据(delete)的区别

Mysql清空表(truncate)与删除表中数据(delete)的区别


两种清空表的方式

truncate table 表名;
delete from 表名;

其中truncate操作中的table可以省略。这两者都是将wp_comments表中数据清空,不过也是有区别的,如下:

  • truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。
  • truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。
  • truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。
  • 如果只需删除表中的部分记录,只能使用DELETE语句配合where条件。 DELETE FROM 表名 WHERE……

参考:

http://blog.is36.com/mysql_difference_of_truncate_and_delete/

上一篇:Oracle_delete很慢,可能表被锁住,需解除死锁,并使用truncate时表中的唯一/主键被启用的外键引用


下一篇:SQL Server 清除表TRUNCATE TABLE 提示: 因为该表正由 FOREIGN KEY 约束引用