Mysql清空表(truncate)与删除表中数据(delete)的区别
在mysql数据库中,清空表中的数据可以使用truncate和delete这2种方法,一种是直接清空,另外一种是逐行删除,本文记录一下truncate和delete这2种操作模式的区别。
truncate table wp_comments;
delete * from wp_comments;
其中truncate
操作中的table可以省略,delete
操作中的*可以省略。这两者都是将wp_posts
表中数据清空,不过也是有区别的,如下:
truncate
是整体删除(速度较快), delete
是逐条删除(速度较慢)。truncate
不写服务器log,delete
写服务器log,也就是truncate
效率比delete
高的原因。truncate
不激活trigger(触发器),但是会重置Identity
(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete
删除以后,Identity
依旧是接着被删除的最近的那一条记录ID加1后进行记录。
如果只需删除表中的部分记录,只能使用DELETE
语句配合where
条件。
DELETE FROM wp_comments WHERE……
参考资料:http://blog.is36.com/mysql_difference_of_truncate_and_delete/