例如下面的两种写法:
第一种:
SELECT
*
FROM
( SELECT * FROM t_a WHERE xx=1 ) a
LEFT JOIN t_b b ON a.id = b.bid
第二种:
SELECT
*
FROM
t_a a
LEFT JOIN t_b b ON a.id = b.bid
WHERE
a.xx = 1
因为我现在没有什么大数据量的表,也没法测;
这两种写法速度上会差很多么?
感觉当 t_a 数据量大的时候,第一种会快很多吧
理论上两者的效率一样,因为mysql优化器会将第一种写法优化成第二种(mysql 5.7.16)。
测试下,使用
explain
和show warnings
show warnings
就是优化器优化后的SQL,会发现已经自动转换成第二种SQL的写法了。(这是在mysql 5.7.16版本上测试,早期5.5估计没有)