Delete與truncate的區別
Delete table_name 刪除"表格記錄"會把操作記錄在日誌中,可以通過事務回滾來恢複刪除的數據。
truncate table table_name刪除"表格記錄"不可恢複 。
delete 語句是數據庫操作語言(dml),這個操作會放到rollback segement 中,事務提交之後才生效;如果有相應的 trigger,執行的時候將被觸發。
truncate、drop 是數據庫定義語言(ddl),操作立即生效,原數據不放到 rollback segment 中,不能回滾,操作不觸發 trigger。
小結:
TRUNCATE TABLE在功能上與不帶WHERE子句的DELETE語句相同:二者均刪除表中的全部行。但TRUNCATE TABLE 比DELETE速度快,且使用的係統和事務日誌資源少。DELETE語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE TABLE通過釋放存儲表數據所用的數據頁來刪除數據,並且隻在事務日誌中記錄頁的釋放。
最後更新:2017-04-03 16:49:16