首页/数据/数据库速查/DELETE 与 TRUNCATE 删除数据
SQL 语法52 条

DELETE 与 TRUNCATE 删除数据

DELETE 可带条件、逐行记录 binlog(可回滚);TRUNCATE 直接重建表、不可回滚、秒级清空整表并重置自增。

数据库速查数据更新于 2026-10-12
用途删除行/清空表
DELETE可 WHERE、走事务、回滚段大
TRUNCATEDDL、隐式提交、重置自增

用法对比

用法对比
DELETE FROM logs WHERE created_at < '2026-01-01' LIMIT 5000;
TRUNCATE TABLE staging_import;

大表清理建议

大表清理建议
-- 分批删除避免长事务
DELETE FROM logs WHERE created_at < '2026-01-01' ORDER BY id LIMIT 5000;
TRUNCATE 是 DDL 语义:隐式提交事务、不能回滚、会重置 AUTO_INCREMENT。

易错点

  • DELETE 不释放磁盘空间(仅标记可复用),大规模删除后要评估 OPTIMIZE TABLE
  • TRUNCATE 在外键被引用时会报错,需要先处理约束

数据来源与参考

  • MySQL 8.0 Reference Manual: TRUNCATE TABLE Statement

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌