子查询过慢导致死机(mysql5.5)
针对5.6以下的版本
Mysql的子查询优化处理不是很好,特别时在where从句中的in()子查询;对于该查询,mysql需要先为内层查询语句的查询结果建立一个临时表,然后外层语句再道临时表中查询记录;
查询完成后,MYSQL还需要撤销这些临时表;
处理方法:使用连接查询来替代子查询改用表连接方式
所以千万不要在主库上面运行这种统计SQL
但是,5.6版本的Mysql对于子查询进行强劲的优化(提高10倍以上),实际,通过explain查看执行计划,mysql5.6实际将子查询改成join方式,所以可以放心大胆使用子查询
后端工程师
主写nodejs
业余python,java
nowindxdw@126.com