有时候我们再做同步,或数据迁移时,会在目标端进行目标表的遗留数据清空操作,有2种方式:
1)runcate table table_name;
2)delete from table_name;
其中truncate操作中的table是可以省略的。上述2条命令都能完成将table_name表中数据清空,它们主要区别如下:
- truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。
- truncate不写服务器log,delete写服务器log,这也是truncate效率比delete高的原因。
- truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID累加。而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。
- 如果只需删除表中的部分记录,只能使用DELETE语句配合where条件。 DELETE FROM table_name WHERE……