delete from aa truncate table aa 區別 1、delete from後面可以寫條件,truncate不可以 2、delete from記錄是一條條刪的,所刪除的每行記錄都會進日誌,而truncate一次性刪掉整個頁,因此日至裏面只記錄頁釋放,簡言之,delete from更新日誌,truncate基本不,所用的事務日誌空間較少 3、delete from刪空表後,會保留一個空的頁,truncate在表中不會留有任何頁 4、當使用行鎖執行 DELETE 語句時,將鎖定表中各行以便刪除。truncate始終鎖定表和頁,而不是鎖定各行。 5、如果有identity產生的自增id列,delete from後仍然從上次的數開始增加,即種子不變,而truncate後,種子會恢復初始 6、truncate不會觸發delete的觸發器,因爲truncate操作不記錄各個行刪除
------------------------------------------------------------------------------------------
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
DELETE 語句每次刪除一行,並在事務日誌中爲所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置爲該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其數據,請使用 DROP TABLE 語句。
對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由於 TRUNCATE TABLE 不記錄在日誌中,所以它不能激活觸發器。
TRUNCATE TABLE 不能用於參與了索引視圖的表。
速度,一般來說: drop > truncate > delete