小编典典

使用JOIN而不是WHERE进行过滤

sql

在SQL(MSSQL,Oracle等)中,在联接表时,向JOIN语句添加过滤器而不是在WHERE子句中添加过滤器有什么好处?

IE

SELECT * FROM X INNER JOIN Y ON X.A = Y.A WHERE X.B = 'SOMETHING'

相对

SELECT * FROM X INNER JOIN Y ON X.A = Y.A AND X.B = 'SOMETHING'

我意识到这并非在所有情况下都有效,但是我注意到在某些情况下,通过将过滤器条件放在JOIN语句中似乎可以提高性能。但是,由于它是JOIN语句的一部分,因此也会使它的行为有些奇怪。

有什么想法吗?


阅读 264

收藏
2021-03-23

共1个答案

小编典典

对于INNER JOIN查询,这些过滤器的性能特征将取决于许多因素-表的大小,索引,查询的选择性以及特定于在其上执行查询的RDBMS的其他因素。

LEFT和中RIGHT OUTER JOIN,过滤器的位置比至关重要INNER JOIN,因为它影响在执行连接之前(JOIN子句)还是之后(WHERE子句)应用它。

2021-03-23