在 MySQL 資料庫管理中,DROP、TRUNCATE 與 DELETE 雖同屬刪除操作,但機制、性能與適用場景截然不同。本文從五大維度深度剖析,助你精準選型。
invalid 狀態minextents 個 extent(除非用 REUSE STORAGE);高水位線歸零DROP > TRUNCATE > DELETE
⚠️ 警告:無備份時慎用 DROP 和 TRUNCATE,數據丟失不可逆。
| 場景 | 推薦操作 | 關鍵提示 |
|---|---|---|
| 刪除部分數據行 | DELETE | 務必帶 WHERE 子句;確保回滾段足夠大 |
| 刪除整張表 | DROP | 徹底移除,不可恢復 |
| 保留表結構、清空所有數據(無事務關聯) | TRUNCATE | 速度快、重置自增 ID |
| 保留表結構、清空所有數據(涉及事務/需觸發器) | DELETE | 較慢但安全可控 |
| 整理表碎片 | TRUNCATE + REUSE STORAGE | 清空後重新導入/插入數據 |
DELETE FROM table; -- 刪除所有數據,保留自增值
TRUNCATE TABLE; -- 清空數據,自增計數器歸零(實際從 1 開始)