1、TRUNCATE在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而TRUNCATE則不會(huì)被撤銷。
2、TRUNCATE是一個(gè)DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對(duì)TRUNCATE使用ROLLBACK命令。
3、TRUNCATE將重新設(shè)置高水平線和所有的索引。在對(duì)整個(gè)表和索引進(jìn)行完全瀏覽時(shí),經(jīng)過TRUNCATE操作后的表比Delete操作后的表要快得多。
4、TRUNCATE不能觸發(fā)任何Delete觸發(fā)器。
5、不能授予任何人清空他人的表的權(quán)限。
6、當(dāng)表被清空后表和表的索引講重新設(shè)置成初始大小,而delete則不能。
7、不能清空父表。
TRUNCATE TABLE (schema)table_name Drop(REUSE)
在默認(rèn)是 Drop STORAGE 當(dāng)使用Drop STORAGE時(shí)將縮短表和表索引,將表收縮到最小范圍,并重新設(shè)置NEXT參數(shù)。REUSE STORAGE不會(huì)縮短表或者調(diào)整NEXT參數(shù)ITPUB個(gè)人空間;
在特殊情況下使用 REUSE STORAGE
一個(gè)實(shí)際應(yīng)用的典型例子:你用sqlldr加載一個(gè)1000萬記錄的數(shù)據(jù)表,但是加載了多一半的時(shí)候你發(fā)現(xiàn)有問題,這個(gè)時(shí)候你想清空表重新加載。那么最好 reuse storage ,這樣再次加載就不需要再次尋找空閑空間了。
數(shù)據(jù)庫操作的sql語句:
使用方法:
truncate table table_name;
操作特性:
truncate 只刪除表中的所有數(shù)據(jù),不刪除表的結(jié)構(gòu);
truncate 是ddl操作立即生效,原數(shù)據(jù)不放到rollback segment中,不能回滾.,操作不觸發(fā)trigger.;
truncate 語句缺省情況下將空間釋放到 minextents個(gè) extent,除非使用reuse storage;
truncate 會(huì)將高水線復(fù)位(回到最開始)。