是否存在使用此JOIN语法的性能差异或其他原因?

时间:2016-05-11 18:16:29

标签: sql-server tsql join

我在“遗留”代码中遇到了几个存储过程,这些代码的连接看起来像这样:

SELECT  *
FROM    TableA
    INNER JOIN TableB
        INNER JOIN TableC ON TableC.TableBId = TableB.TableBId
    ON TableA.TableAId = TableB.TableAId

我会以不同的方式编写此查询,如下所示:

SELECT  *
FROM    TableA
INNER JOIN TableB ON TableA.TableAId = TableB.TableAId
INNER JOIN TableC ON TableB.TableBId = TableC.TableBId

结果是一样的,但我发现第二个例子更容易理解,特别是在有多个连接的情况下。使用JOIN子句“延迟”编写ON语句是否有任何优势,直到指定了所有连接后,如第一个示例中那样?

1 个答案:

答案 0 :(得分:2)

不,谓词顺序对它的执行方式无关紧要。您可以将ON谓词放在WHERE中,或者随机混合它们,最后得到相同的执行计划。虽然我在重写代码时会轻描淡写,但我并不完全理解,在你自己的代码中,你应该写出可读的方式。