SQL加入具有过滤条件的查询:性能

我想加入几个表,但要过滤来自'A'表的特定类型。哪个更好的查询来自以下两个查询(有没有更好的方法?)还是没有查询优化器的差异原因?SQL加入具有过滤条件的查询:性能

当过滤条件被在给定的“WHERE子句:

SELECT .. FROM A a JOIN B b ON a.id=b.id JOIN C c on a.id = c.id...<other joins>...WHERE a.col='SOME_VAL'; 

过滤条件被内给出“ON”:

SELECT .. FROM A a JOIN B b ON a.id=b.id AND a.col='SOME_VAL' JOIN C c on a.id = c.id...<other joins> 

回答:

随着内部联接没有造成的性能差异,这你可以使用EXPLAIN来检查(你的查询的两种形式都应该产生相同的计划)。

使用WHERE子句的好处通常是可读性。与多行布局结合使用时。 (我强烈建议不要保留你所有的SQL作为一个长行。)

SELECT 

stuff

FROM

foo

INNER JOIN

bar

ON (join predicates here)

WHERE

(static filters here)

变得更容易阅读的原因(和维护)是连接谓词现在明确只描述表之间的关系。该查询仍然正确运行没有WHERE子句,但返回一个更大的集合。

以上是 SQL加入具有过滤条件的查询:性能 的全部内容, 来源链接: utcz.com/qa/260512.html

回到顶部