数据库中需要删除百万条目数据的若干处理方式

本文介绍如何优化MySQL数据库中大规模数据删除操作的效率,包括使用INNER JOIN进行高效删除、避免索引更新导致的性能下降、以及在低数据量情况下采用表重建策略。

1.像mysql这个关系型数据库在数据量达到千万级别之后,删除数据尤其之慢,更甚者生成环境是基本不允许这样低效率的操作出现,为此需要另种优化删除方式–来经过该进,使用inner join 的方式删除起来,效率成倍的提升!例如通过以下语句的调整更改提高删除效率:

DELETE FROM t_orders_detail a,(SELECT * FROM t_pro_record c WHERE c.state=3) b WHERE a.pro_record_id=b.prId;

2.每次删除记录,数据库都要相应地更新索引,这是很慢的IO操作,而且后面索引下的碎片越来越多,就更慢,这就是为什么一开始只花1.5小时,后面要3小时才能删除400万条记录,呈递增式的缓慢操作效果

A.删除之前,做个完整备份,一般而言是没有目标表的则select into from来塑造,有目标表则通过insert into select  * from;
B.删除前先保存当前索引的DDL,然后删除其索引;
C.然后根据使用的删除条件建立一个临时的索引,以此建立提高删除效率的索引,打造围绕一个字段的聚集型索引,以此为基地大大提升删除效率;
D.开始执行删除操作,过程会大大削减,时间得到节省,效率显而易见,完成之后再重建之前的索引。

3.若是低于千万级别的数据同时所删数据也较少几万条以内的话,可以把要保留的数据备份出来。在drop表。重新创建,先不要急着创建索引、主键,把数据导回去,然后在建索引、约束之类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值