mysql 删除数据慢

最近做项目,一张单表临时数据达到3亿,非常影响数据库性能,就考虑删除表中多余的数据,就遇到这个删除数据非常缓慢的问题了!
直接上代码吧:

DELETE FROM t_orders_detail WHERE pro_record_id in(SELECT a.prId FROM (SELECT pr.id AS prId FROM t_pro_record pr  WHERE pr.state=3 LIMIT 0,1) a);

这种是用in的一般写法,删除起来奇慢!
后来经过该进,使用inner join 的方式删除起来,效率成倍的提升!

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

总结:像mysql这个关系型数据库,最好的删除方式就是使用连接的方式删除,可以大大提高删除效率!

猜你喜欢

转载自blog.csdn.net/Hello_l/article/details/71419464