,truncate和delete之间有什么区别?

用户投稿 49 0

关于“ftruncate_php”的问题,小编就整理了【3】个相关介绍“ftruncate_php”的解答:

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),操作时不会进行存储,不能进行回滚。

3. 清理速度

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

4. 高水位重置

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

truncate命令可以用来删除部分数据?

truncate table是截断某个表,执行后那是一了百了,怎么可能只删一行。只删一行使用delete 表名 where 查询条件。

数据库delete和truncate的区别?

1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。

3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。4、TRUNCATE不能触发任何DELETE触发器。

5、不能授予任何人清空他人的表的权限。

6、当表被清空后表和表的索引将重新设置成初始大小,而delete则不能。7、不能清空父表。

TRUNCATE TABLE (schema)table_name

DROP(REUSE) STORAGE 在默认是 DROP STORAGE 当使用DROP STORAGE时将缩短表和表索引,将表收缩到最小范围,并重新设置NEXT参数。REUSE STORAGE不会缩短表或者调整NEXT参数在特殊情况下使用 REUSE ST

DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的的删除操作作为事务记录在日志中保存以便进行进行回滚操作。

到此,以上就是小编对于“ftruncate_php”的问题就介绍到这了,希望介绍关于“ftruncate_php”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!