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會清除該表所有的限制,觸發器,索引等等;