天天看點

Mysql中的drop、truncate和delete的差別

A:結構層面

delete是逐行删除,并且同時将該行的删除操作作為事務,在記錄日志中儲存以便進行復原操作.可以與where一起使用删除某一條記錄,不加where則删除所有記錄.

truncate則一次性的從表中删除所有的資料并不把單獨的删除操作記錄日志儲存,删除行是不能恢複的,并且在删除的過程中不會激活與表有關的删除觸發器,它的執行速度快.直接truncate+table不用加where.

drop删除整個表(資料和結構)

B:表和索引所占空間

被truncate後這個表和索引所占用的空間會恢複到初始大小.

delete操作不會減少表和索引所占用的空間.

drop将表和索引所占用的空間全部釋放.

C:速度上

drop>truncate>delete

D:應用範圍

delete可以是table和view

truncate隻能對table