SQL中Truncate与Delete的区别
来自:种豆
时间:2017-12-29
阅读:635次
原文链接
truncate与delete是两种删除数据库记录的方法,但两者有较大区别。
truncate与delete的区别一
truncate是ddl语言;语法是 TRUNCATE TABLE TableNamedelete是dml语言;语法是 DELETE TableName;后面可以跟where条件删除某些指定记录。
truncate与delete的区别二
truncate在删除记录时是对一个页操作,在日志中,仅仅记录释放页面的这个动作,而不记录每一行。删除数据不会计入日志delete 每次删除一行记录,并且把记录都存进日志文件
truncate与delete的区别三
truncate删除速度快;操作不触发Trigger,会保留表结构、列、约束、索引等delete删除速度慢
truncate与delete的区别四
truncate删除记录不能rollback,即不能恢复truncate删除记录可以rollback,即可以恢复
truncate与delete的区别五
Truncate比Delete使用锁少TRUNCATE操作由于是对页操作,所以只需要申请页锁或者表锁。DELETE是一行一行删除,需要对处理的行进行加锁,而且是行锁。
TRUNCATE和DELETE有以下几点区别
1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能触发任何DELETE触发器。5、不能授予任何人清空他人的表的权限。6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。7、不能清空父表。