mysql优化从17秒多到1秒多。怀疑人生

一段MySQL,大概是这样

set @bl='value'; #定义变量 子查询1 子查询2 子查询3的where条件都用到了

select ...
from(
   #子查询1(用到@bl)
   union
    #子查询2(用到@bl)
   union
    #子查询3(用到@bl)
    
)
left join(子查询4)

结果查询用了17s:

然后分别执行子查询,结果最慢的只有1s多,我就不淡定了,笛卡尔积也不能这么卡啊

然后反手就是去掉变量,直接赋值的操作,即将子查询中用到的变量@bl 都改成了直接的字符串值,再执行,擦只有1s多:

怀疑人生!!!原因日后再分析吧,项目时间紧,先记下来

原文地址:https://www.cnblogs.com/zjfblog/p/13278168.html