记一次MySQL更新操作 where 子查询(in 子句)出现的性能坑!!!!

由于这个问题纠缠了我一下午,现在记录一下,以免后续重覆辙!

场景简单描述大概是这样的,有两张表A(id,name,xxx),B(id,aid,name,xxx),其中B表的aid列是A表的外键,现在我想根据一些条件从B表选出aid然后根据这些aid对A表进行更新,其中A表的数据量大概是两万条,B表的数据量是四五千条,刚开始我写的sql大概是这样子的:

update A set name=xxx where id in
(
select aid from B where xxxx
);

理论上这点数据量应该很快就会执行完成,但是事实不是这样的,一直running,无语,多次直接杀掉执行进程分析,无果,后面终于找到原因改变解决方案解决。

简而言之就是 in改成join

转载 https://blog.csdn.net/defonds/article/details/46745143

猜你喜欢

转载自www.cnblogs.com/kevin-w/p/12431799.html