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