天天看點

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通過釋放存儲表資料所用的資料頁來删除資料,并且隻在事務日志中記錄頁的釋放。