1. 程式人生 > >Mysql清空表(truncate)與刪除表中資料(delete)的區別

Mysql清空表(truncate)與刪除表中資料(delete)的區別

  1. truncate table 表名;
  2. delete * from 表名;

其中truncate操作中的table可以省略,delete操作中的*可以省略。這兩者都是將表中資料清空,不過也是有區別的,如下:

truncate是整體刪除(速度較快), delete是逐條刪除(速度較慢)。 truncate不寫伺服器log,delete寫伺服器log,也就是truncate效率比delete高的原因。

truncate不啟用trigger(觸發器),但是會重置Identity(標識列、自增欄位),相當於自增列會被置為初始值,又重新從1開始記錄,而不是接著原來的ID數。而delete刪除以後,Identity依舊是接著被刪除的最近的那一條記錄ID加1後進行記錄。

如果只需刪除表中的部分記錄,只能使用DELETE語句配合where條件。 DELETE FROM 表名 WHERE……