DELETE / TRUNCATE / DROP要点
- DELETE 删行:可带 WHERE、可回滚、触发触发器、速度慢
- TRUNCATE 清表:整表清空、不可回滚、重置自增、速度快
- DROP 删表:表结构索引权限全没,最彻底
- TRUNCATE 重置自增计数,DELETE 不重置
- 只有 DELETE 属 DML 受事务控制,另两者属 DDL
- 删大表数据优先 DELETE 分批,别一上来 TRUNCATE
DELETE / TRUNCATE / DROP对照
| 维度 | DELETE | TRUNCATE | DROP |
|---|---|---|---|
| 作用对象 | 数据行 | 整表数据 | 整张表 |
| 能否带 WHERE | 能 | 不能 | 不能 |
| 能否回滚 | 能 | 不能 | 不能 |
| 自增 id | 不重置 | 重置 | 表已无 |
| 语句类型 | DML | DDL | DDL |
| 执行速度 | 慢 | 快 | 最快 |
避坑提醒:TRUNCATE 与 DROP 都是隐式提交,执行即生效,别指望 ROLLBACK 能救;清库前先备份。