SQL server快速刪除表中的所有數據
SQL server快速刪除表中的所有數據,與 DELETE 語句相比,TRUNCATE TABLE 具有以下優點:
所用的事務日志空間較少。
DELETE 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一個條目。TRUNCATE TABLE 通過釋放用于存儲表數據的數據頁來刪除數據,并且在事務日志中只記錄頁釋放。
使用的鎖通常較少。
當使用行鎖執行 DELETE 語句時,將鎖定表中各行以便刪除。TRUNCATE TABLE 始終鎖定表和頁,而不是鎖定各行。
表中將毫無例外地不留下任何頁。
執行 DELETE 語句后,表仍會包含空頁。例如,必須至少使用一個排他 (LCK_M_X) 表鎖,才能釋放堆中的空表。如果執行刪除操作時沒有使用表鎖,表(堆)中將包含許多空頁。對于索引,刪除操作會留下一些空頁,盡管這些頁會通過后臺清除進程迅速釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。若要刪除表定義及其數據,請使用 DROP TABLE 語句。
如果表包含標識列,該列的計數器重置為該列定義的種子值。如果未定義種子,則使用默認值 1。若要保留標識計數器,請使用 DELETE。
限制
不能對以下表使用 TRUNCATE TABLE:
由 FOREIGN KEY 約束引用的表。
參與索引視圖的表。
通過使用事務復制或合并復制發布的表。
對于具有以上一個或多個特征的表,請使用 DELETE 語句。
TRUNCATE TABLE 不能激活觸發器,因為該操作不記錄各個行刪除。有關詳細信息,請參閱 CREATE TRIGGER (Transact-SQL)。
關鍵字:SQL server、事務日志、數據
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解