truncate、delete、drop区别

truncate

  • DDL 不删除表结构,只删除表数据;
  • 一次性删除所有行,不计入日志,无法回滚,
  • 删除数据时等同于delete from table.(区别见下)
  • truncate删除表时,索引和外键占用空间会回到初始化最小;不能触发触发器

delete

  • DML 不删除表结构,只删除数据;
  • 一行一行删除,每删除一行都计入日志,可以回滚;
  • 索引、外键都保持

drop

  • DDL 删除整个表结构,速度最快
  1. 速度:drop>truncate>delete
  2. delete from table 和truncate:对于由外键约束引用的表,不能使用truncate,使用delete
  3. 只有delete可以回滚

http://www.cnblogs.com/zhizhao/p/7825469.html

原文地址:https://www.cnblogs.com/vanoraxnc/p/8945546.html