天天看点

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