truncate和delete的区别

简介: truncate和delete的区别

truncate和delete的区别在于四个方面:1. 条件删除、2. 事务回滚、3. 清理速度、4. 高水位重置。因为delete是可以带WHERE的,所以支持条件删除;而truncate只能删除整个表。

  1. 条件删除
    这个比较好理解,因为delete是可以带WHERE的,所以支持条件删除;而truncate只能删除整个表。

  2. 事务回滚

由于delete是数据操作语言(DML - Data Manipulation Language),操作时原数据会被放到 rollback segment中,可以被回滚;而truncate是数据定义语言(DDL - Data Definition Language),操作时不会进行存储,不能进行回滚。

  1. 清理速度

在数据量比较小的情况下,delete和truncate的清理速度差别不是很大。但是数据量很大的时候就能看出区别。由于第二项中说的,truncate不需要支持回滚,所以使用的系统和事务日志资源少。delete 语句每次删除一行,并在事务日志中为所删除的每行记录一项,固然会慢,但是相对来说也较安全。

  1. 高水位重置

随着不断地进行表记录的DML操作,会不断提高表的高水位线(HWM),delete操作之后虽然表的数据删除了,但是并没有降低表的高水位,随着DML操作数据库容量也只会上升,不会下降。所以如果使用delete,就算将表中的数据减少了很多,在查询时还是很和delete操作前速度一样。

而truncate操作会重置高水位线,数据库容量也会被重置,之后再进行DML操作速度也会有提升。

目录
相关文章
|
7月前
|
算法 关系型数据库 MySQL
drop、truncate 和 delete 的区别
drop、truncate 和 delete 的区别
|
4月前
|
SQL 存储 数据库
DROP、TRUNCATE 和 DELETE 命令的区别
【8月更文挑战第3天】
316 4
DROP、TRUNCATE 和 DELETE 命令的区别
|
4月前
|
SQL 数据处理 数据库
DELETE 和 TRUNCATE 语句之间的详细区别
【8月更文挑战第31天】
645 0
|
4月前
|
SQL 数据管理 数据库
DROP 和 TRUNCATE 命令的详细区别
【8月更文挑战第31天】
482 0
|
SQL 存储 索引
详细了解SQL中delete,drop,truncate的区别和不同
详细了解SQL中delete,drop,truncate的区别和不同
253 1
|
SQL
简单说一说 drop、delete 与 truncate 的区别
简单说一说 drop、delete 与 truncate 的区别
172 0
|
SQL 存储 数据库
Drop、Truncate和Delete究竟怎么删除
在数据库种有三个对表中数据进行删除的语法,分别是Drop、Truncate和Delete。关于它们的区别和相同的地方也是在面试的过程中经常遇到的。平时也是用了就用了,哪个用的习惯就用哪个。不过既然都是删除为什么还要有三个不同的语句呢?说明它们之间肯定有着不一样的地方。邓爷爷说过实践是检验真理的唯一标准。这里就通过实际的例子总结一下它们之间的一些异同点,也加深一下自己的印象。
230 0
Drop、Truncate和Delete究竟怎么删除
说说delete与truncate的区别?
说说delete与truncate的区别?
115 0
|
Web App开发 关系型数据库
Truncate/Delete/Drop table的特点和区别
之前一直对Truncate/Delete/Drop认识的不是很清晰,所以特意的翻了一下MySQL5.7 Reference Manual,准备系统的了解一下,这里是一些翻译,外加一点自己的认知。
1244 0