前提是表格本质上可以加入内,因为where子句排除不匹配,只是究竟有多糟的所有记录用以下2查询语句的语法风格第一:的TABLE1 T1,T2 TABLE2 WHERE T1.Blah = T2.Blah - VS - INNER JOIN
SELECT {COLUMN LIST}
FROM TABLE1 t1, TABLE2 t2, TABLE3 t3, TABLE4 t4 (etc)
WHERE t1.uid = t2.foreignid
AND t2.uid = t3.foreignid
AND t3.uid = t4.foreignid
etc
代替
SELECT {COLUMN LIST}
FROM TABLE1 t1
INNER JOIN TABLE2 t2 ON t1.uid = t2.foreignid
INNER JOIN TABLE3 t3 ON t2.uid = t3.foreignid
INNER JOIN TABLE4 t4 ON t3.uid = t4.foreignid
我不知道这是否是有限的微软SQL,甚至是特定的版本,但我理解是第一种情况是全外连接使所有可能的相关性都可以访问。
我已经在过去使用第一种方法来优化访问两个显著大数据的存储,每个具有外围表查询加入他们,与那些产品加入后期走到一起查询。通过允许每个“较大”表中的加入到它们各自的查找表,并且只结合每个较大的表中的一个特定子集,我发现有超过引入大表来之前彼此特定的过滤是显着的速度提升。
在正常情况下(简单连接)的情况下,使用第二种场景会不会更好?我发现它更容易阅读,看起来会更快。
我不会用来优化,有办法做你所描述的使用派生表的例子或通过改变连接顺序。 – HLGEM 2009-09-29 22:05:05