MySQL中JOIN查询详解(二)

2014-11-24 18:11:21 · 作者: · 浏览: 2
WHERE t3 IS NOT NULL AND t3.b=t2.b 再转换为:
SELECT * FROM t1, t2, t3
WHERE t3 IS NOT NULL AND t3.b=t2.b AND t2.a=t1.a


规则4:尽量将多个等式转换连等式。


规则5:ORDER BY 操作尽量施加在结果集而不是源集上。
但在 JOIN 操作的 ON 子句中有等式或不等式(指不包括"!="在内的其他比较符号)且等式两边没有常数时,可能会先对源集进行排序,然后进行归并联接。


规则6:如果某个索引可以获取所有 SELECT 语句需要的列,则优先考虑该索引。


规则7:尽量将子查询转换为 JOIN。
大多数情况下,子查询可能需要较多的临时表存储,并且查询速度较之 JOIN 要慢得多。


规则8:在允许的情况下,对 JOIN 的各个表重排次序,提高执行的速度。
数据量较小的表可能会被放在最前面先处理,数据量较大的表会稍后处理。但如果 ON 子句明确指定了依赖关系,根据依赖关系处理,顺序不可调整。