Mysql中truncate,delete和drop的区别

博客围绕MySQL数据库大批量数据删除问题展开,介绍了三种删除方式。delete灵活性高但效率低,支持触发器和事务;truncate只能整表删除,效率高,无法回滚和触发触发器;drop能清空整个表。速度上drop最快,truncate次之,delete最慢。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

有大批量数据要删除,delete太慢了。

知识点

删除方式之delete

1.灵活性高,可以对表数据进行部分删除;

例:

delete from tb_name where id=1;

2.效率低:属于DML语句,逻辑性差,逐行进行删除,因为可以事务回滚,它在binglog记录,必然效率慢。

3.支持触发器:可以触发triggers;

4.自增字段保留原有最大值,并继续往后增长

5.支持事务:删除行数据是不释放空间的,每删除一行数据,就在事务日志中为删除的那一行数据做记录,因此可以使用rollback语句回滚;

删除方式之truncate

1.灵活性低,只能对整表数据删除,保留表结构。(如果存在外键约束,就会删除失败)

例:

truncate table tb_name;

2.效率高:属于DDL语句,需要drop权限,会隐式提交;

3.事务:不能rollback回滚数据;

4.无法触发triggers;

5.自增字段从头开始技术;

删除方式之drop

1.属于DDL语句,可以把整个表清空(谨慎使用)

在速度上的区别:drop最快,其次truncate,delete最慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值