mysql中delete与truncate的区别
从以下四个方面来说明:
1、条件删除:
delete支持条件删除,而truncate只能删除表所有数据;
2、事务回滚:
delete是数据操作语言(DML),操作时原数据会被放到 rollback segment中,可以被回滚;而truncate是数据定义语言(DDL),操作时不会进行存储,不能进行回滚。
3、清理速度:
TRUNCATE不需要支持回滚,所以使用的系统和事务日志资源少。DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项,固然会慢,但是相对来说也较安全。
4、高水位重置:
delete进行的DML操作虽然表数据删除了,但是表的高水位并没有降低,数据库容量也不会下降;而truncate操作会重置高位水线,数据库容量也会被重置,之后再进行DML操作速度也会有提升。