truncate和delete删除数据库数据

先说结论:truncate比delete删除数据快的多

最近因为性能和一些业务问题,在数据库造了大量的数据,但是需要去验证问题的时候,数据库的数据太多,通过SQL语句查询也比较麻烦,就想偷个懒全删数据,重新来,但是手动删除的效率是真的慢,尝试了delete也不快,想到之前看到的一个truncate。果然删除速度是真的快。【当然,删除表再建表最快】

一、删除语句

1、Delete删除

delete from table_name

eg:delete from material_set

2、Truncate 删除

truncate table table_name

eg:truncate table material_set

二、Delete和Truncate区别

1. 条件删除、2. 事务回滚、3. 清理速度、4. 高水位重置。

1. 条件删除

delete是可以带WHERE的,所以支持条件删除;而truncate只能删除整个表,不支持条件删除。

eg:delete from material_set where material_set_no = '1'

2、事务回滚

delete是数据操作语言(DML - Data Manipulation Language),操作时原数据会被放到 rollback segment中,可以被回滚。

truncate是数据定义语言(DDL - Data Definition Language),操作时不会进行存储,不能进行回滚。

3、清理速度

在数据不多的情况下,delete和truncate删除的速度差别不会很大,但是当数据比较多的时候,truncate明细比delete快的多。

delete删除不影响表所占用的extent,每次都是删除一行,可以在不删除表的情况下删除所有行,表结构,表属性,表索引都是完整的,而且会在事务日志中记录删除的每项记录,所有会较慢,但是比较安全。

truncate不需要回滚,所以用到的系统和事务日志资源比较少,所以删除数据比较快。

4. 高水位重置

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值