truncate 和delete只刪除資料, drop則刪除整個表(結構和資料)
truncate、drop是dll(data define language),操作立即生效,原資料不放到 rollback segment中,不能回滾 (delete是dml)
delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。
truncate table 則一次性地從表中刪除所有的資料並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。
drop 是將表直接刪除。
速度:一般而言,drop > truncate > delete
表和索引所佔空間:當表被truncate 後,這個表和索引所占用的空間會恢復到初始大小,delete操作不會減少表或索引所占用的空間。drop語句將表所占用的空間全釋放掉。
應用範圍:
truncate 只能對table; delete可以是table和view
如果想刪除表,當然用drop;
如果想保留表而將所有資料刪除,如果和事務無關,用truncate即可;
如果和事務有關,或者想觸發trigger,還是用delete;
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新匯入/插入資料。
delete和drop truncate的區別
1.truncate和不帶where子句的delete 以及drop都會刪除表內的資料。2.drop truncate都是ddl語句 資料定義語言 執行後會自動提交。1.truncate 和 delete 只刪除資料不刪除表的結構 定義 drop 語句將刪除表的結構被依賴的約束 constrain ...
drop truncate和delete的區別
delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。truncate table 則一次性地從表中刪除所有的資料並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。...
drop truncate和delete的區別
1 delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。truncate table 則一次性地從表中刪除所有的資料並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度...