mysql delete语句非常耗时_解决项目中MySQL数据库执行删除语句时间太长的问题

本文介绍了在遇到MySQL删除语句执行时间过长的问题时,如何进行排查和优化。错误的删除操作导致客户端卡住,通过创建临时表分批删除解决了问题。此外,还涉及了权限、文件编码格式和启动脚本的错误及其解决方案。
摘要由CSDN通过智能技术生成

问题描述:

由于业务需求,需要删除一些重复数据。即删除openid对应的2条数据,最终只保留一行。

MySQL数据库,sql语句比较简单:删除数据前,备份数据是必须的!

先来错误的演示:

1.先把错误数据查询出来

SELECT

id,

openid,

COUNT(*) as recCount

FROM tb_wx_user_info_bak

GROUP BY openid

HAVING COUNT( * ) > 1

2.根据要删除的数据的ID,进行删除

DELETE FROM tb_wx_user_info_bak WHERE id IN

(

SELECT

id,

openid,

COUNT(*) AS recCount

FROM tb_wx_user_info_bak

GROUP BY openid

HAVING COUNT( * ) > 1

)

一看就会,一做就废。

执行了上面的sql,果然,把sqlyog客户端的操作界面卡住了。

于是再开了个新的窗口。也不知道这个sql要执行多久,只能等着了。

3小时过后,这个sql窗口还是老样子,也不知道删除成功了多少数据。

在新的窗口中查询数据表,还是一样的数据量,应该是在卡住的窗口删除了一些数据但是没有提交,因此在新的窗口,数据量没有变化。

*****

在等待的时间中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值