MySQL中清空表 delete table 和截断表 truncate table 的区别

           MySQL中清空表 delete table 和截断表 truncate table 的区别

 

一、发现问题

1、在使用Navicat 操作清空MySQL数据库时,发现有清空表截断表两个选项。这两个选项都能实现清空MySQL数据库操作,那么 清空表和截断表 有什么区别呢

 

 

 

二、区别

1、SQL不同:

  • 清空表: DELETE FROM table_name ;

  • 截断表: TRUNCATE [TABLE] table_name ;

 

2、返回值不同:

  • 清空操作,会返回删除的行数

  • 截断操作,返回0

 

3、自增字段处理

  • 清空操作:不会将自增字段置为1,继续保留最大值。

  • 截断操作:将自增字段值置为1。

 

4、效率比较

  • 清空操作: 会扫描全表,表数据越多删的越慢。

  • 截断操作:不扫描全表,效率高,几乎与表数据无关。 (相当于重新创建了表,只保留了表的结构,然后删除掉原有表,效率非常高)

 

5、日志记录

  • 清空操作:会记录日志,可恢复。

  • 截断操作:不记录日志,无法恢复。 谨慎使用!

 

6、触发器影响

  • 清空操作:相当于执行 DELETE删除语句,会激活触发器。

  • 截断操作:直接对表的操作,不会激活触发器。

 

三、总结

1、清空操作: DELETE FROM table_name ; 不会重置自增字段,效率低,有日志记录,会激活触发器。 对于数据量大的表,执行的比较慢。

2、截断操作:TRUNCATE [TABLE] table_name ; 会重置自增字段,效率高,无日志记录,不会激活触发器。 请谨慎使用,一旦执行,数据无法恢复。 数据无价,请慎之又慎!! (不要一不小心删库跑路 ^_^)!

 

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值