truncate table和不帶 where 的 detele 功能一樣,都是刪除表中的所有數據。 但TRUNCATE TABLE 速度更快,占用的日志更少,這是因為 TRUNCATE TABLE 直接釋放數據頁並且在事務日志中也只記錄數據頁的釋放,而 DELETE 是一行一行地刪除,在事務日志中要記錄每一條記錄的刪除。 那么可不可以用 TRUNCATE TABLE 代替不帶 WHERE 的 DELETE 呢?在以下情況是不行的: 1、要保留標識的情況下不能用 TRUNCATE TABLE,因為 TRUNCATE TABLE 會重置標識。 2、需要使用觸發器的情況下不能使用 TRUNCATE TABLE ,它不會激發觸發器。 3、對於由 FOREIGN KEY 約束引用的表(即主鍵所在的表,不是外鍵所在的表)不能使用 TRUNCATE TABLE。 4、對於參與了索引視圖的表不能使用 TRUNCATE TABLE ,注意指索引視圖,並非普通視圖。 PS: Truncate是SQL中的一個刪除數據表內容的語句,用法是: TRUNCATE TABLE [Table Name]。 具有聚集索引的視圖成為索引視圖;必須先為視圖創建聚集索引,然后才能為該視圖定義其他索引,因為 在創建其他索引的時候,SQL SERVER, 會重建表是的非聚集索引。 轉載引用:http://www.cnblogs.com/hanmos/archive/2011/03/28/1997973.html