📌 DELETE vs TRUNCATE 核心对比
🎯 一句话总结: 灵活用DELETE,秒删用TRUNCATE!
数据库 | TRUNCATE能回滚? | 重置自增ID? |
---|---|---|
MySQL | 部分支持(InnoDB可) | ✅ 是 |
PostgreSQL | ✅ 支持事务回滚 | ✅ 是 |
Oracle | ❌ 自动提交,不能回滚 | ✅ 是 |
SQL Server | ✅ 支持事务回滚 | ✅ 是 |
🎯 一句话总结: 除了Oracle,大部分库的TRUNCATE都越来越安全!
实测:
DELETE百万行需 20秒,TRUNCATE仅需 0.2秒!
🎯 一句话总结: TRUNCATE是“表重置”,DELETE是“慢慢搬家”!
🎯 一句话总结: 清空前,先问自己这4个问题!
✅ 整表清空 → TRUNCATE优先 ✅ 条件删除 → DELETE必须 ✅ 重要操作前 → 务必备份!
🔔 最重要的一句话:
快速清表,用TRUNCATE;精准清理,用DELETE!
使用场景 | 推荐指令 |
---|---|
清空整张小表 | TRUNCATE |
清空大表(数百万行) | TRUNCATE |
只删部分数据(有WHERE) | DELETE |
需要触发器执行额外逻辑 | DELETE |
保持自增ID不变 | DELETE |