由于这个问题纠缠了我一下午,现在记录一下,以免后续重覆辙!
场景简单描述大概是这样的,有两张表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