DELETE與TRUNCATE有什么不同

字號(hào):


    刪除表中的數(shù)據(jù)的方法有delete,truncate,
    它們都是刪除表中的數(shù)據(jù),而不能刪除表結(jié)構(gòu),delete 可以刪除整個(gè)表的數(shù)據(jù)也可以刪除表中某一條或N條滿(mǎn)足條件的數(shù)據(jù),而truncate只能刪除整個(gè)表的數(shù)據(jù),一般我們把delete 操作叫作刪除表,而truncate操作叫作截?cái)啾?
    truncate 操作與 delete 操作對(duì)比
    操作
    回滾
    高水線(xiàn)
    空間
    效率
    Truncate
    不能
    下降
    回收
    快
    delete
    可以
    不變
    不回收
    慢
    TRUNCATE和DELETE有以下幾點(diǎn)區(qū)別
    1、TRUNCATE在各種表上無(wú)論是大的還是小的都非常快。如果有ROLLBACK命令DELETE將被撤銷(xiāo),而TRUNCATE則不會(huì)被撤銷(xiāo)。
    2、TRUNCATE是一個(gè)DDL語(yǔ)言,向其他所有的DDL語(yǔ)言一樣,他將被隱式提交,不能對(duì)TRUNCATE使用ROLLBACK命令。
    3、TRUNCATE將重新設(shè)置高水平線(xiàn)和所有的索引。在對(duì)整個(gè)表和索引進(jìn)行完全瀏覽時(shí),經(jīng)過(guò)TRUNCATE操作后的表比DELETE操作后的表要快得多。
    4、TRUNCATE不能觸發(fā)任何DELETE觸發(fā)器。
    5、不能授予任何人清空他人的表的權(quán)限。
    6、當(dāng)表被清空后表和表的索引將重新設(shè)置成初始大小,而delete則不能。
    7、不能清空父表。