回覆列表
  • 1 # 羅浮高萬仞

    在邏輯上truncate table和delete語句都可以刪除表裡面所有資料,但是在一些情況下有些不同:對於InnoDB表1,如果沒有外來鍵關聯,innodb執行truncate是先drop table(原始表),再建立一個跟原始表一樣空表,速度要遠遠快於delete逐條刪除行記錄。2,如果使用innodb_file_per_table引數,truncate table 能重新利用釋放的硬碟空間,在InnoDB Plugin中,truncate table為自動回收,如果不是用InnoDB Plugin,那麼需要使用optimize table來最佳化表,釋放空間。3,表有外來鍵關聯,truncate table刪除表資料為逐行刪除,如果外來鍵指定級聯刪除(delete cascade),關聯的子表也會會被刪除所有表資料。如果外來鍵未指定級聯(cascde),truncate table逐行刪除資料,如果是父行關聯子錶行資料,將會報錯。4,auto_increment計數器在truncate table後會重置為0.與是否有外來鍵關聯沒有關係。

  • 中秋節和大豐收的關聯?
  • 蘋果7和小米6哪個拍照好?