drop、delete 與truncate
要刪除一個表,你可以使用SQL語句DROP TABLE。例如,又從資料庫中徹底刪除表mytable,你要使用如下的語句:
DROP TABLE mytable
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一個帶有外來鍵的表,如果要刪除首先要取消外來鍵,然後再刪除。TRUNCATE TABLE (schema)table_name DROP(REUSE) STORAGE
在預設是 DROP STORAGE 當使用DROP STORAGE時將縮短表和表索引,將表收縮到最小範圍,並重新設定NEXT引數。REUSE STORAGE不會縮短表或者調整NEXT引數在特殊情況下使用 REUSE STORAGE
一個實際應用的典型例子:
你用sqlldr載入一個1000萬記錄的資料表,但是載入了多一半的時候你發現有問題,
這個時候你想清空表重新載入。
那麼最好 reuse storage ,這樣再次載入就不需要再次尋找空閒空間了
DELETE語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。
TRUNCATE TABLE 則一次性地從表中刪除所有的資料頁並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733361/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL truncate 、delete與drop區別SQLdelete
- truncate delete drop 區別delete
- 簡述truncate、delete和dropdelete
- Truncate,Delete,Drop的比較.delete
- truncate,delete,drop的異同點delete
- Truncate table 詳解及與delete,drop 的區別delete
- Truncate table詳解及與delete,drop的區別delete
- HWM和delete,drop,truncate的關係delete
- truncate,delete,drop的異同點(原)delete
- 關於delete,drop,truncate的問題delete
- 資料庫:drop、truncate、delete的區別資料庫delete
- [轉][資料庫SQL語句]truncate/delete/drop同與不同資料庫SQLdelete
- 詳解SQL中drop、delete和truncate的異同SQLdelete
- oracle恢復表delete/truncate/drop的方法總結Oracledelete
- 資料庫關鍵詞 drop、truncate和delete的用法資料庫delete
- truncate和不帶where子句的delete, 以及drop區別delete
- truncate與delete的區別delete
- oracle truncate 與 delete 的區別Oracledelete
- RMAN恢復單個表空間或被DROP/DELETE/TRUNCATE的表delete
- Diffrence Between delete and truncatedelete
- truncate 比 delete 慢delete
- SQL – TRUNCATE vs DELETESQLdelete
- zt_orafaq_delete與truncate的區別delete
- truncate delete 的區別delete
- mysql資料庫中刪除資料的三種形式 drop和 truncate 和 deleteMySql資料庫delete
- truncate 比 delete 慢的原因。delete
- truncate和delete 的區別delete
- 利用Log Explorer將你已經delete,truncate,drop過的資料進行恢復delete
- truncate 和 delete 的效能對比delete
- Oracle drop,truncate partition 索引失效 實驗Oracle索引
- drop table和truncate table的區別
- sql:delete if exists還是drop if exists?SQLdelete
- delete和truncate刪除的區別delete
- Oracle中truncate和delete的區別Oracledelete
- 深入解析delete和truncate不同之處:delete
- 在MySQL中 Truncate Delect Drop 的區別MySql
- oracle實驗記錄 (基礎,truncate與delete區別實驗)Oracledelete
- SQLSERVER 的 truncate 和 delete 有區別嗎?SQLServerdelete