2022年05月06日 22:18:17

truncate table和delete * from

truncate table 和delete * from的区别为:释放数据不同、清空标识不同、触发器不同。

一、释放数据不同

1、truncate table:truncate table 直接释放数据页,并且在事务日志中也只记录数据页的释放。

2、delete * from:delete * from 是一行一行地释放数据,在事务日志中要记录每一条记录的删除。

二、清空标识不同

1、truncate table:truncate table不仅是删除表里面的数据,而且还会清空表里面主键的标识。

2、delete * from:delete * from仅仅能删除数据,不能清空标识。

三、触发器不同

1、truncate table:truncate table不会激发触发器。

2、delete * from:delete * from会激发触发器。




1、DROP删表,表结构将删了,当然数据也不存在了

2、TRUNCATE和DELETE删数据,表结构还在
3、DELETE可以带条件删除,TRUNCATE是全部删除
4、DELETE删除会写日志,TRUNCATE不写
5、DELETE效率低,数据可以恢复,TRUNCATE效率高,数据不可恢复



truncate table 不仅是删除表里面的数据,而且还会清空表里面主键的标识。也就是说使用过truncate table 的表在重新写入数据的时候,标识符会从0或1重新开始(看你设置的种子号)。
delete * from就是仅仅能删除数据,不能清空标识。不过delete * from可以后面加Where truncate table却不能加Where。。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。