truncate操作同沒有where條件的delete操作十分相似,只是把表裡的資訊全部刪除。
主要區別如下:
1.無論truncate
大表還是小表速度都非常快。
delete
要產生回滾資訊來滿足回滾需求,而
truncate
是不產生的。
2.truncate
是ddl
語句進行隱式提交,不能進行回滾操作。
3.truncate
重新設定表和索引的
hwm(高水標記),由於全表掃瞄和索引快速掃瞄都要讀取所有的資料塊知道
hwm為止。所以全表掃瞄的效能不會因為
delete
而提高,但是經過
truncate
操作後速度會很快。
4.truncate
不觸發任何
delete
觸發器。
5.當表被truncate
後,這個表和索引所占用的空間會恢復到初始大小,而
delete
操作不會減少表或索引所占用的空間。
6.不能truncate
乙個帶有外來鍵的表,如果要刪除首先要取消外來鍵,然後再刪除。
7.delete
語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的的刪除操作作為事務記錄在日誌中儲存以便進行進行回滾操作。
8.truncate table
則一次性地從表中刪除所有的資料頁並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢復的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。
truncate和delete和drop的異同
相同點 truncate 和不帶 where 子句的 delete,以及 drop 都會刪除表內的資料 不同點 1.truncate 和 delete 只刪除資料不刪除表的結構 定義 drop 語句將刪除表的結構被依賴的約束 constrain 觸發器 trigger 索引 index 依賴於該錶的...
TRUNCATE和DELETE的區別
1 truncate在各種表上無論是大的還是小的都非常快。如果有rollback命令delete將被撤銷,而truncate則不會被撤銷。2 truncate是乙個ddl語言,向其他所有的ddl語言一樣,他將被隱式提交,不能對truncate使用rollback命令。3 truncate將重新設定高...
delete和truncate的區別
測試省略 delete命令並不能完全釋放掉 或者索引的資料結構以及他們申請的頁面。在這一點上,sql server2005以後的版本比之前的版本做得好些,樹比堆做 得更好些。truncate語句和delete語句相比具有以下優點 1,所用的事務日誌空間較少 delete每刪除一行資料,都會在事務日誌...