閱讀808 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go Oracle Greatest()函數
  下一篇:go Oracle中的sql語句優化