簡述truncate、delete和drop
使用Truncate 將會:
1.清除相應索引(不是Drop,仍然保留extent) ;
2.受外來鍵參考的約束(FOREIGN KEY).當然必須先DISABLE 或DROP 相應的外來鍵參考,才能TRUNCATE,注意沒有CASCADE 選項 .
3.不觸發DELETE 觸發器
4.若使用了DROP STORAGE(預設), 除了已指定的MINEXTENTS,其它EXTENT 重新分配NEXT_EXTENT 設定MINEXTENTS 之後的EXTENT,High-Water Mark 復位指向表中的第一個BLOCK。 使用REUSE STORAGE 保留表的使用空間 ,保留原來的擴充套件,但不合並; HWM(高水位)的位置RESET 到第一個BLOCK。 當使DROP STORAGE時將縮短表和表索引,將表收縮到最小範圍,並重新設定NEXT 引數。 REUSESTORAGE 不會縮短表或者調整NEXT 引數。另外一個區別是,用reuse storage可以減少對錶及資料字典的鎖定時間,特別是大表常這樣做,餘下和DEALLOCATEUNUSED 來逐步回收空間。Truncate 語句預設情況(預設情況為drop storage)下空間釋放到 minextents個 extent, 除非使用reuse storage (如果使用reuse storage,那麼這些刪除之後留下的空間會被保持) ; Truncate 會將高水線復位(回到最開始)。 如果是整理表內部的碎片,可以用truncate 跟上reuse stroage,再重新匯入/插入資料。
Delete 語句不影響表所佔用的extent, 高水線(high watermark)保持原位置不動 。 Delete 語句是DML,這個操作會放到rollback segement 中,事務提交之後才生效;如果有相應的trigger,執行的時候將被觸發。Drop 語句將表所佔用的空間全部釋放 。 drop 語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index); 依賴於該表的儲存過程/函式將保留,但是變為invalid 狀態 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1069690/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- drop、delete 與truncatedelete
- truncate delete drop 區別delete
- HWM和delete,drop,truncate的關係delete
- Truncate,Delete,Drop的比較.delete
- SQL truncate 、delete與drop區別SQLdelete
- truncate,delete,drop的異同點delete
- 詳解SQL中drop、delete和truncate的異同SQLdelete
- truncate,delete,drop的異同點(原)delete
- 關於delete,drop,truncate的問題delete
- 資料庫關鍵詞 drop、truncate和delete的用法資料庫delete
- truncate和不帶where子句的delete, 以及drop區別delete
- 資料庫:drop、truncate、delete的區別資料庫delete
- oracle恢復表delete/truncate/drop的方法總結Oracledelete
- Truncate table 詳解及與delete,drop 的區別delete
- Truncate table詳解及與delete,drop的區別delete
- mysql資料庫中刪除資料的三種形式 drop和 truncate 和 deleteMySql資料庫delete
- truncate和delete 的區別delete
- [轉][資料庫SQL語句]truncate/delete/drop同與不同資料庫SQLdelete
- truncate 和 delete 的效能對比delete
- drop table和truncate table的區別
- RMAN恢復單個表空間或被DROP/DELETE/TRUNCATE的表delete
- delete和truncate刪除的區別delete
- Oracle中truncate和delete的區別Oracledelete
- 深入解析delete和truncate不同之處:delete
- Diffrence Between delete and truncatedelete
- truncate 比 delete 慢delete
- SQL – TRUNCATE vs DELETESQLdelete
- SQLSERVER 的 truncate 和 delete 有區別嗎?SQLServerdelete
- MySQL和Oracle中的delete,truncate對比MySqlOracledelete
- truncate delete 的區別delete
- Oracle中truncate和delete的區別(例項)Oracledelete
- truncate與delete的區別delete
- truncate 比 delete 慢的原因。delete
- 利用Log Explorer將你已經delete,truncate,drop過的資料進行恢復delete
- oracle truncate 與 delete 的區別Oracledelete
- Oracle drop,truncate partition 索引失效 實驗Oracle索引
- 關於 Oracle 分割槽索引的正確 DROP 和 TRUNCATE 方法Oracle索引
- sql:delete if exists還是drop if exists?SQLdelete