oracle truncate 與 delete 的區別

ysjxjf發表於2006-08-10
oracle truncate 與 delete 的區別[@more@]
truncate與delete的區別
truncate操作 同沒有where條件的delete操作十分相似
1、無論truncate大表還是小錶速度都非常快。delete要產生回滾資訊來滿足回滾需求
而truncate是不產生的。
2、truncate是DDL語句進行隱式提交,不能進行回滾操作
3、truncate重新設定表和索引的HWM(高水標記),由於全表掃描和索引快速掃描都要讀取所有的資料塊知道HWM為止
所以全表掃描的效能不會因為delete而提高,但是經過truncate操作後速度會很快
4、truncate不觸發任何delete觸發器
5、不能賦給某個使用者truncate其它使用者表的許可權。如果需要trucate其它使用者表的許可權必須對該使用者賦DROP ANY TABLE許可權
6、當表被truncate後,這個表和索引所佔用的空間會恢復到初始大小,而delete操作不會減少表或索引所佔用的空間。
7、不能truncate一個帶有外來鍵的表,如果要刪除首先要取消外來鍵,然後再刪除。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66634/viewspace-854890/,如需轉載,請註明出處,否則將追究法律責任。

相關文章