2020-12-21 delete删除和truncate删除的区别

delete和truncate删除数据区别
从上表可以看出,delete和truncate删除数据会有以下四点不同:

①delete支持条件删除

所谓条件删除,即有条件地删除数据。比如,delete删除数据可以用where语句,如

delete from 表名 where 列名=值;
delete可以删除指定的列的数据,但truncate只能删除整个表中的数据;

②事务回滚

我理解的事务回滚,即撤销操作。当你使用一个SQL语句进行了一项操作之后,你可以通过事务回滚回到原来的状态。

读者可以通过以下操作体验:

读者可以在开启事务回滚之后,使用rollback语句,看看数据是否回归。

③清理速度

在前两条比较中,delete语句相比于truncate语句更加地支持个性化,也更加安全,但在该条比较中,truncate更加具有优势。

在删除少量数据时,delete语句和truncate删除速度几乎没有区别,但在删除大量数据时,truncate删除速度更快。

在第二项中,delete语句支持事务回滚,也就是说,该语句执行一次,会在事务日志中为删除的数据记录一行。随着大量的删除,会导致事务日志记录过多而导致执行速度变慢。

而truncate虽然不支持事务回滚,但在删除大量数据时,速度会明显快于delete操作。

④ truncate语句支持高水位重置
随着对一个数据库的增删改查的大量执行,会不断提高表的高水位线(HWM)。而使用truncate语句,会重置表的高水位线,之后再进行DML操作,速度也会提升。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值