Mysql清空表(truncate)与删除表中数据(delete)的区别

羌俊恩 社区创始人
运维领域优质创作者
博客专家认证
2022-09-13 13:00:39

有时候我们再做同步,或数据迁移时,会在目标端进行目标表的遗留数据清空操作,有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……
...全文
8 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
云享运维知识库

8729

社区成员

欢迎各位小伙伴踊跃加入,将日常运维中遇到的问题贴出来,解决方案分享出来,或自己的博客关于运维的文章分享到这里,来一起营造一个运维的知识库,以提升运维工作更加高效快捷,减少重复造车轮的无限循环。
devopslinux开源 企业社区 北京·西城区
社区管理员
  • 羌俊恩
加入社区
帖子事件
创建了帖子
2022-09-13 13:00
社区公告

本社区:旨在推进运维云化知识库建设,为更多运维提供参考及经验交流;加入社区的同学,如果运维工作中遇到问题或最后得到解决,有劳凑空发帖,分享共建FAQ社区。

得到解决方案的同学,请积极为发帖的同学点赞、评论、能力范围内打赏激励。另外本社区采用游戏修仙角色作为鼓励,对不同贡献者授予对应“勋章”。

最后祝愿社区繁荣昌盛,此致敬礼!!!