在 SQL(MSSQL、Oracle 等)中,当连接表时,向 JOIN 语句添加过滤器而不是在 WHERE 子句中添加过滤器有什么好处?
i.e.
SELECT * FROM X INNER JOIN Y ON X.A = Y.A WHERE X.B = 'SOMETHING'
versus
SELECT * FROM X INNER JOIN Y ON X.A = Y.A AND X.B = 'SOMETHING'
我意识到这并非在所有情况下都有效,但我注意到在某些情况下,通过将过滤条件放入 JOIN 语句中似乎可以提高性能。但是,由于它是 JOIN 语句的一部分,因此也可能导致其行为有点奇怪。
想法?
For INNER JOIN
查询时,这些过滤器的性能特征将取决于许多因素 - 表的大小、索引、查询的选择性以及执行查询的 RDBMS 特定的其他因素。
In LEFT
and RIGHT OUTER JOIN
,过滤器的位置比INNER JOIN
,因为影响它是否会在(JOIN
子句)或之后(WHERE
子句)执行连接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)