Home  >  Article  >  Database  >  truncatetable与delete区别

truncatetable与delete区别

WBOY
WBOYOriginal
2016-06-07 16:06:383816browse

truncate table需要drop table权限,它是完全清空一张表。 从逻辑上看,truncate table同delete 一样,或是drop table +create table一样。使用truncate table删除全表数据,要比delete要快。使用truncate table清空数据,不能进行回滚,且不受表间外键约束

truncate table需要drop table权限,它是完全清空一张表。 从逻辑上看,truncate table同delete 一样,或是drop table +create table一样。使用truncate table删除全表数据,要比delete要快。使用truncate table清空数据,不能进行回滚,且不受表间外键约束限制。 truncate是DDL语句,而且delete是DML语句,两者区别如下: 1.truncate 是邮drop table+create table ,比使用delete一行行删除数据要快得多,特别是清空大数据的表。 2.truncate是一种隐匿提交,所以不能进行回滚。 3.若当前表有外键约束,truncate table 可以清空表中的所有数据,不受外键约束限制。 4.使用truncate table将自增ID置零,delete则不会。 5.在使用分区表时,截断表保存分区;也就是说,数据和索引文件删除并重新创建,在分区定义(.par)文件不受影响。 6.TRUNCATE TABLE语句不调用删除触发器。

参考:

http://dev.mysql.com/doc/refman/5.7/en/truncate-table.html http://dev.mysql.com/doc/refman/5.6/en/optimizing-innodb-ddl-operations.html
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn