天天看點

随筆20180608TRUNCATE TABLE和DELETE FROM差別PS:Truncate是SQL中的一個删除資料表内容的語句,用法是:  TRUNCATE TABLE [Table Name]。

TRUNCATE TABLE和DELETE FROM差別

TRUNCATE TABLE 和不帶 WHERE 的 DELETE 功能是一樣的,都是删除表中的所有資料,不過 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,   會重建表是的非聚集索引。

SQL UNIQUE 限制

UNIQUE 限制唯一辨別資料庫表中的每條記錄。

UNIQUE 和 PRIMARY KEY 限制均為列或列集合提供了唯一性的保證。

PRIMARY KEY 擁有自動定義的 UNIQUE 限制。

c#