MySQL的truncate和delete的区别是什么?

发布于:2025-12-02 00:5778人浏览
MySQL中的truncate和delete操作的主要区别在于: truncate删除整张表, delete删除表中的部分或所有记录 truncate用于 Truncate an entire table 的。 delete 用于 Delete some rows from a table。

MySQL中的truncate和delete操作的主要区别在于:

  1. truncate删除整张表, delete删除表中的部分或所有记录
    truncate用于 Truncate an entire table 的。
    delete 用于 Delete some rows from a table。

  2. truncate速度更快
    由于truncate直接删除表,因此执行速度更快。
    delete需要检索被删除的记录,速度相对较慢。

  3. truncate事务处理方式不同
    truncate操作不能回滚,不能被roll back。
    delete可以被回滚,适用于事务处理。

  4. truncate重建索引
    truncate删除表后,会自动重新生成所有索引。
    delete不会重建索引。

  5. truncate不使用日志
    truncate不对日志文件产生作用,不会导致binlog大小增长。
    delete会生成binlog。

  6. truncate重置自增主键
    truncate会重置表的AUTO_INCREMENT列。
    而delete并不会重置。

总的来说,二者的主要区别在于:

  • truncate删除整张表,delete删除部分记录

  • truncate速度更快

  • truncate不能回滚,delete可以回滚

  • truncate重建索引,delete不重建索引

  • truncate不使用日志,delete使用日志

  • truncate重置自增主键,delete并不重置

truncate用于完全清空表,speed快。delete用于删除部分记录,能回滚。


相关文章
    最新文章
    热门标签