truncate與delete的區別
1、在功能上,truncate是清空一個表的內容,它相當於delete from table_name。
2、delete是dml操作,truncate是ddl操作;因此,用delete刪除整個表的資料時,會產生大量的roolback,佔用很多的rollback segments, 而truncate不會。
3、在記憶體中,用delete刪除資料,表空間中其被刪除資料的表佔用的空間還在,便於以後的使用,另外它是“假相”的刪除,相當於windows中用delete刪除資料是把資料放到回收站中,還可以恢復,當然如果這個時候重新啟動系統(OS或者RDBMS),它也就不能恢復了!
而用truncate清除資料,記憶體中表空間中其被刪除資料的表佔用的空間會被立即釋放,相當於windows中用shift+delete刪除資料,不能夠恢復!
4、truncate 調整high water mark 而delete不;truncate之後,TABLE的HWM退回到 INITIAL和NEXT的位置(預設)delete 則不可以。
5、truncate 只能對TABLE,delete 可以是table,view,synonym。
6、TRUNCATE TABLE 的物件必須是本模式下的,或者有drop any table的許可權 而 DELETE 則是物件必須是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的許可權。
7、在外層中,truncate或者delete後,其佔用的空間都將釋放。
8、truncate和delete只刪除資料,而drop則刪除整個表(結構和資料)。
TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日誌資源少。
DELETE 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。
TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其資料,請使用 DROP TABLE 語句。
對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由於 TRUNCATE TABLE 不記錄在日誌中,所以它不能啟用觸發器。
TRUNCATE TABLE 不能用於參與了索引檢視的表。
相關文章
- oracle truncate 與 delete 的區別Oracledelete
- truncate delete 的區別delete
- SQL truncate 、delete與drop區別SQLdelete
- zt_orafaq_delete與truncate的區別delete
- truncate和delete 的區別delete
- truncate delete drop 區別delete
- Truncate table 詳解及與delete,drop 的區別delete
- Truncate table詳解及與delete,drop的區別delete
- delete和truncate刪除的區別delete
- Oracle中truncate和delete的區別Oracledelete
- 資料庫:drop、truncate、delete的區別資料庫delete
- SQLSERVER 的 truncate 和 delete 有區別嗎?SQLServerdelete
- Oracle中truncate和delete的區別(例項)Oracledelete
- drop、delete 與truncatedelete
- 表管理之四:刪除資料Delete與truncate的使用區別delete
- oracle實驗記錄 (基礎,truncate與delete區別實驗)Oracledelete
- truncate和不帶where子句的delete, 以及drop區別delete
- rman 中delete 與delete force 的區別delete
- delete 和 delete [] 的真正區別delete
- backup archivelog delete input 與delete all input 區別Hivedelete
- Diffrence Between delete and truncatedelete
- truncate 比 delete 慢delete
- SQL – TRUNCATE vs DELETESQLdelete
- Truncate,Delete,Drop的比較.delete
- truncate 比 delete 慢的原因。delete
- truncate,delete,drop的異同點delete
- truncate 和 delete 的效能對比delete
- delete table 和 truncate table - 型別安全的心 - 部落格園delete型別
- malloc free與new delete的區別和聯絡delete
- drop table和truncate table的區別
- 簡述truncate、delete和dropdelete
- HWM和delete,drop,truncate的關係delete
- truncate,delete,drop的異同點(原)delete
- 關於delete,drop,truncate的問題delete
- RMAN 中delete exipired 和 delete obsolete 的區別delete
- rman 中的 delete all input 和 delete input 的區別delete
- 在MySQL中 Truncate Delect Drop 的區別MySql
- MySQL和Oracle中的delete,truncate對比MySqlOracledelete