首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL AUTO_INCREMENT 重置計數器兩大方案:ALTER TABLE vs TRUNCATE

     編輯:MySQL 綜合教學

清空資料表後重新插入資料時,AUTO_INCREMENT 計數器不會自動歸零,導致主鍵 ID 從斷點繼續增長。本文對比兩種重置方案的優劣與適用場景,助您按需選擇。

方案一:ALTER TABLE 精確控制起始值


DELETE FROM `test`;
ALTER TABLE `test` AUTO_INCREMENT = 1;

優點: 可指定任意起始值(如業務需求從 10000 開始)。
缺點: 大表執行極慢(90 萬行測試超 10 分鐘),因需全表掃描重建索引。

方案二:TRUNCATE TABLE 一鍵歸零


TRUNCATE TABLE `test`;

優點: 執行極快(元資料操作),自動重置計數器歸 1。
缺點: 無法自定義起始值;會觸發隱式提交,不可回滾;外鍵約束表無法執行。

場景選擇建議

場景推薦方案理由
開發/測試環境快速重置TRUNCATE秒級完成,無殘留
生產環境歸檔後重建TRUNCATE避免長時間鎖表
業務要求特定起始 IDALTER TABLE支援自定義起始值
存在外鍵關聯的表ALTER TABLETRUNCATE 會報錯

補充提示: 5.7+ 版本中 ALTER TABLE ... AUTO_INCREMENT=N 僅修改計數器值,不重建表,效能大幅提升;但仍建議大表操作在低峰期執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved