truncate delete drop之間的區別

2021-08-26 02:00:04 字數 1450 閱讀 8798

truncate table 在功能上與不帶 where 子句的 delete 語句相同:二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。   delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。

truncate table 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。

truncate,delete,drop放在一起比較:

truncate table:刪除內容、釋放空間但不刪除定義。

delete table:刪除內容不刪除定義,不釋放空間。

drop table:刪除內容和定義,釋放空間。

1。delete from後面可以寫條件,truncate不可以

2。delete from記錄是一條條刪的,所刪除的每行記錄都會進日誌,而truncate一次性刪掉整個頁,因此日至裡面只記錄頁釋放,簡言之,delete from更新日誌,truncate基本不,所用的事務日誌空間較少

3。delete from刪空表後,會保留乙個空的頁,truncate在表中不會留有任何頁

4。當使用行鎖執行 delete 語句時,將鎖定表中各行以便刪除。truncate始終鎖定表和頁,而不是鎖定各行。

5。如果有identity產生的自增id列,delete from後仍然從上次的數開始增加,即種子不變,而truncate後,種子會恢復初始

6。truncate不會觸發delete的觸發器,因為truncate操作不記錄各個行刪除

truncate和delete有以下幾點區別  1、truncate在各種表上無論是大的還是小的都非常快。如果有rollback命令delete將被撤銷,而truncate則不會被撤銷。  2、truncate是乙個ddl語言,向其他所有的ddl語言一樣,他將被隱式提交,不能對truncate使用rollback命令。  3、truncate將重新設定高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過truncate操作後的錶比delete操作後的表要快得多。  4、truncate不能觸發任何delete觸發器。  5、不能授予任何人清空他人的表的許可權。  6、當表被清空後表和表的索引講重新設定成初始大小,而delete則不能。  7、不能清空父表。 truncate table (schema)table_name drop(reuse) storage 在預設是 drop storage 當使用drop storage時將縮短表和表索引,將表收縮到最小範圍,並重新設定next引數。reuse storage不會縮短表或者調整next引數在特殊情況下使用 reuse st

delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。

truncate table 則一次性地從表中刪除所有的資料頁並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。

truncate,delete,drop的異同點

注意 這裡說的delete是指不帶where子句的delete語句 相同點 truncate和不帶where子句的delete,以及drop都會刪除表內的資料 不同點 1.truncate和 delete只刪除資料不刪除表的結構 定義 drop語句將刪除表的結構被依賴的約束 constrain 觸發...

truncate,delete,drop的異同點

truncate,delete,drop的異同點 說明 本文摘自oracle技術使用者討論組 truncate,delete,drop的異同點 注意 這裡說的delete是指不帶where子句的delete語句 相同點 truncate和不帶where子句的delete,以及drop都會刪除表內的資...

truncate,delete,drop的異同點

href file c docume 1 gaomeng locals 1 temp msohtml1 06 clip filelist.xml rel file list truncate,delete,drop的異同點注意 這裡說的 delete 是指不帶 where 子句的delete 語句相...