本文最后更新于 2024-07-23,文章内容可能已经过时。

基本概念

truncate: DDL操作,删除表中的所有数据

delete: DML操作,逐行删除数据

执行效率

truncate: 更快,不记录删除日志,重置自增ID值

delete: 逐行执行,记录删除日志,可能影响性能

数据恢复与回滚

truncate: 不能回滚,不会触发触发器

delete: 可以回滚,会触发触发器

空间占用与释放

truncate: 释放空间但只复制表结构

delete: 不释放空间,每次删除一行都会更新日志

使用场景

truncate: 适合需要立即生效的场景,如数据清理或表重建前准备

delete: 适合需要保留历史记录的场景,如数据恢复或备份前的彻底删除

事务日志记录

truncate: 只记录页的释放信息

delete: 记录每行被删除的信息,有助于回滚操作

自增ID值处理

truncate: 自增ID值从1开始计数

delete: 自增ID值保留原来的最大数值