萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

SQL 刪除資料表資料:DROP、TRUNCATE、DELETE 差異與效能比較

三指令對比表

指令刪除內容保留結構釋放空間可 Rollback觸發 Trigger速度
DROP TABLE資料+結構+索引+權限❌✅❌ (DDL 隱式提交)❌最快
TRUNCATE TABLE所有資料✅✅ (重置 High Water Mark)❌ (DDL 隱式提交)❌極快
DELETE FROM符合 WHERE 的列✅❌ (保留 HWM,產生碎片)✅ (DML 記錄每列)✅較慢

關鍵差異說明

  • DROP:徹底移除表,如「解散整個班級」。
  • TRUNCATE:清空資料、重置身分識別欄 (IDENTITY) 計數器、不觸發 DELETE Trigger、不可 Rollback。如「全班學生畢業離校,班級仍在」。
  • DELETE:逐列刪除、記錄交易日誌、可 Rollback、觸發 Trigger、可帶 WHERE 條件。如「逐個開除學生」。

實測觀察

  • DELETE 後再插入,IDENTITY 不連續 (空間未釋放)。
  • TRUNCATE 後插入,IDENTITY 從種子重新開始 (空間已釋放)。

使用建議

  • 需保留表結構、快速清空全表 → TRUNCATE。
  • 需條件刪除、需 Rollback、需觸發 Trigger → DELETE。
  • 不再需要該表 → DROP。
  • 父表被外鍵參考時 TRUNCATE 會失敗,需先移除 FK 或改用 DELETE。
copyright © 萬盛學電腦網 all rights reserved