美文网首页
【MySQL5】清空表

【MySQL5】清空表

作者: 马克约瑟 | 来源:发表于2019-03-02 21:07 被阅读0次

如何清空表?想必很多人都回答delete或先drop tablecreate table,但是,delete的效率比较低,drop tablecreate table的写法比较复杂,相比而言,truncate table可以一步到位、更高效率地完成清空表的操作。

truncate table语法如下:

TRUNCATE [TABLE] tbl_name

truncate table属于DDL语句,它可以更快地秒删数据,不需要提交事务,但使用它需要drop权限。

以下是truncate tabledelete的区别:

  • truncate相当于先dropcreate,它比起delete一行行删除更加快;
  • truncate操作会隐式提交,因此无法回滚;
  • 当SQL会话持有活跃表的锁(lock)时,truncate操作无法执行;
  • 当其它表有着引用此表的外键时,此表无法被truncate table,但是,如果外键引用自身,则允许执行truncate table
  • truncate table不会告诉你删除了多少行数据,通常结果无非“0 rows affected”,其实就是“没有信息”;
  • 任何aoto_increment值会被重置为起始值,这对MyISAMInnoDB同样有效;
  • 对于分区表,truncate table保留着分区,也就是说,数据和索引文件被清空和重建,但是分区定义文件(.par)文件不受影响;
  • truncate table语句不会触发delete触发器。

相关文章

网友评论

      本文标题:【MySQL5】清空表

      本文链接:https://www.haomeiwen.com/subject/wslyuqtx.html