美文网首页日更成长营
MySQL中清空表 delete table 和截断表 trun

MySQL中清空表 delete table 和截断表 trun

作者: 小强聊成长 | 来源:发表于2023-02-10 14:09 被阅读0次

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

    01.SQL语句不同:

    清空表执行的操作如这个语句: DELETE FROM 表名 ;

    截断表: TRUNCATE table表名 ;

    02.返回值不同:

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

    截断操作,返回0

    03.自增字段处理

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

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

    04.效率比较

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

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

    05.日志记录

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

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

    06.触发器影响

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

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

    说在最后

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

    02.截断操作:TRUNCATE table 表名 ; 会重置自增字段,效率高,无日志记录,不会激活触发器。 请谨慎使用,一旦执行,数据无法恢复。 数据无价,请慎之又慎!! 

    ________________END______________

    相关文章

      网友评论

        本文标题:MySQL中清空表 delete table 和截断表 trun

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