ORACLE中DROP、TRUNCATE和DELETE的區別

1、TRAUNCAT TABLE A;

       ————清空A表,並且釋放A表清空之前佔用內存;

       ————TRUNCATE是一個DDL語言,執行之後自動提交事物,執行之後無法回滾。

       ————只有表格創建者,或者相關權限者才能執行此操作。

       ————執行速度快於DELETE;

       ————執行之後將重新設置高水位線(高水位線,High Water Mark,內存空間上限,Oracle中每個分區segment——也就是                          內存空間,都有一個上限。當表佔用空間超過上限,高水位線會增大,而且這個值只會增大,不會減小,當執行                                  DELETE時,雖然清楚了數據,但是HWM的值不會變,但是當執行TRUNCAT時,HWM會置爲0);

       ————執行TRUNCATE之後再次操作表,速度會變快,因爲HWM重置,不需要全表掃描很大的空間;

       ————當TRUNCATE表,表的所有索引被重置,進行查詢操作速度會變快;

       ————當TRUNCATE會重置標識計數值,DELETE不會;

       ————當TRUNCATE會重置自增主鍵(Sequence鍵),從1開始,DELETE不會,這都是DDL性質決定的;

2、DELETE TABLE A;

       ————清空A表,不能釋放A表清空之前佔用內存;

       ————DELETE是DML語言,執行之後需要手動提交事物,執行之後可以回滾。

       ————執行DELETE之後再次操作表,速度不會變快,因爲HWM沒有重置,仍需要全表掃描很大的空間;

       ————當DELETE表,表的所有索引不會被重置,進行查詢操作速度不會變快;

       ————當DELETE可以按條件刪除,TRUNCATE不可以;

3、DROP TABLE A;

       ————DROP是DDL語句,隱式COMMIT,不能回滾;

       ————清除表結構,清除表空間,TRUNCATE和DELETE不會;

       ————DROP會清除該表所有的約束,觸發器,索引等等;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章