TRUNCATE 快速刪除表中的所有數(shù)據(jù)
與 DELETE 語(yǔ)句相比,TRUNCATE TABLE 具有以下優(yōu)點(diǎn):
所用的事務(wù)日志空間較少。
DELETE 語(yǔ)句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一個(gè)條目。TRUNCATE TABLE 通過(guò)釋放用于存儲(chǔ)表數(shù)據(jù)的數(shù)據(jù)頁(yè)來(lái)刪除數(shù)據(jù),并且在事務(wù)日志中只記錄頁(yè)釋放。
使用的鎖通常較少。
當(dāng)使用行鎖執(zhí)行 DELETE 語(yǔ)句時(shí),將鎖定表中各行以便刪除。TRUNCATE TABLE 始終鎖定表和頁(yè),而不是鎖定各行。
表中將毫無(wú)例外地不留下任何頁(yè)。
執(zhí)行 DELETE 語(yǔ)句后,表仍會(huì)包含空頁(yè)。例如,必須至少使用一個(gè)排他 (LCK_M_X) 表鎖,才能釋放堆中的空表。如果執(zhí)行刪除操作時(shí)沒(méi)有使用表鎖,表(堆)中將包含許多空頁(yè)。對(duì)于索引,刪除操作會(huì)留下一些空頁(yè),盡管這些頁(yè)會(huì)通過(guò)后臺(tái)清除進(jìn)程迅速釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結(jié)構(gòu)及其列、約束、索引等保持不變。若要?jiǎng)h除表定義及其數(shù)據(jù),請(qǐng)使用 DROP TABLE 語(yǔ)句。
如果表包含標(biāo)識(shí)列,該列的計(jì)數(shù)器重置為該列定義的種子值。如果未定義種子,則使用默認(rèn)值 1。若要保留標(biāo)識(shí)計(jì)數(shù)器,請(qǐng)使用 DELETE。
限制
不能對(duì)以下表使用 TRUNCATE TABLE:
由 FOREIGN KEY 約束引用的表。
參與索引視圖的表。
通過(guò)使用事務(wù)復(fù)制或合并復(fù)制發(fā)布的表。
對(duì)于具有以上一個(gè)或多個(gè)特征的表,請(qǐng)使用 DELETE 語(yǔ)句。
TRUNCATE TABLE 不能激活觸發(fā)器,因?yàn)樵摬僮鞑挥涗浉鱾€(gè)行刪除。有關(guān)詳細(xì)信息,請(qǐng)參閱 CREATE TRIGGER (Transact-SQL)。
- oracle數(shù)據(jù)庫(kù)刪除數(shù)據(jù)Delete語(yǔ)句和Truncate語(yǔ)句的使用比較
- 數(shù)據(jù)庫(kù)中刪除語(yǔ)句Drop、Delete、Truncate的相同點(diǎn)和不同點(diǎn)的比較(實(shí)例說(shuō)明)
- MySQL刪除數(shù)據(jù)Delete與Truncate語(yǔ)句使用比較
- smarty中先strip_tags過(guò)濾html標(biāo)簽后truncate截取文章運(yùn)用
- drop,truncate與delete的區(qū)別
- sqlserver 日志恢復(fù)方法(搞定drop和truncate)
- 詳解MySQL中DROP,TRUNCATE 和DELETE的區(qū)別實(shí)現(xiàn)mysql從零開(kāi)始
- delete from 表名與truncate table 表名區(qū)別
相關(guān)文章
SQL Server中自動(dòng)抓取阻塞的詳細(xì)流程
當(dāng)來(lái)自應(yīng)用程序的第一個(gè)連接控制鎖而第二個(gè)連接需要相沖突的鎖類(lèi)型時(shí),將發(fā)生阻塞,其結(jié)果是強(qiáng)制第二個(gè)連接等待,而在第一個(gè)連接上阻塞,本文給大家詳細(xì)介紹了SQL Server中如何自動(dòng)抓取阻塞,通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
sqlserver索引的原理及索引建立的注意事項(xiàng)小結(jié)
本文起點(diǎn)可能會(huì)相對(duì)高點(diǎn),首先你的很熟悉索引以及他們的存儲(chǔ)結(jié)構(gòu) 有很多地方你可能覺(jué)得有異議,歡迎一起討論2012-07-07
利用 SQL Server 過(guò)濾索引提高查詢語(yǔ)句的性能分析
本文就給大家介紹一下 Microsoft SQL Server 中的過(guò)濾索引功能,本文通過(guò)場(chǎng)景模擬分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07
大型項(xiàng)目中Java連接MSSQL的性能優(yōu)化
在大型項(xiàng)目中,Java語(yǔ)言和MSSQL數(shù)據(jù)庫(kù)的結(jié)合應(yīng)用變得越來(lái)越流行,這不但是因?yàn)镴ava語(yǔ)言提供高度可移植性和高效處理大量數(shù)據(jù)的優(yōu)勢(shì),而且MSSQL具備高效便捷的存儲(chǔ)和數(shù)據(jù)查詢能力,今天我們將討論如何在Java項(xiàng)目中與MSSQL數(shù)據(jù)庫(kù)進(jìn)行交互2024-02-02
sqlserver中關(guān)于WINDOWS性能計(jì)數(shù)器的介紹
sqlserver中關(guān)于WINDOWS 性能計(jì)數(shù)器的介紹,需要的朋友可以看下2013-01-01
通過(guò)T-SQL語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)庫(kù)備份與還原的代碼
利用T-SQL語(yǔ)句,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的備份與還原的功能,需要的朋友可以參考下。2011-11-11
Sql Server刪除數(shù)據(jù)庫(kù)時(shí)提示數(shù)據(jù)庫(kù)正在被使用的解決辦法
當(dāng)您嘗試刪除SQL Server中的某個(gè)對(duì)象(如數(shù)據(jù)庫(kù)、表等)時(shí),如果有程序或進(jìn)程正在使用該對(duì)象,您可能會(huì)收到一個(gè)錯(cuò)誤信息,提示該對(duì)象正被使用,所以本文給大家介紹了Sql Server刪除數(shù)據(jù)庫(kù)時(shí)提示數(shù)據(jù)庫(kù)正在被使用的解決辦法,需要的朋友可以參考下2024-05-05
SQL語(yǔ)句刪除2條重復(fù)數(shù)據(jù)一條保留一條
SQL語(yǔ)句2條完全一樣的數(shù)據(jù)刪除一條保留一條,SQL Server 2005 Express 下測(cè)試通過(guò), 僅供參考2012-06-06
用SQL語(yǔ)句實(shí)現(xiàn)隨機(jī)查詢數(shù)據(jù)并不顯示錯(cuò)誤數(shù)據(jù)的方法
用SQL語(yǔ)句實(shí)現(xiàn)隨機(jī)查詢數(shù)據(jù)并不顯示錯(cuò)誤數(shù)據(jù)的方法...2007-11-11
SQL小技巧 又快又簡(jiǎn)單的得到你的數(shù)據(jù)庫(kù)每個(gè)表的記錄數(shù)
說(shuō)到如何得到表的行數(shù),大家首先想到的應(yīng)該是select count(*) from table1....2009-09-09

