3

这两个语句/示例之间的结果或性能是否存在差异:

示例 1(连续的 INNER 关系)

    SELECT ID FROM TABLE T
    INNER JOIN TABLE2 T2 ON T.ID = T2.ID
    INNER JOIN TABLE3 T3 ON T2.ID = T3.ID

示例 2(非连续 INNER 关系)

    SELECT ID FROM TABLE T
    INNER JOIN TABLE2 T2 ON T.ID = T2.ID
    INNER JOIN TABLE3 T3 ON T.ID = T3.ID

或在这两个语句/示例之间:

示例 1(连续的 LEFT 关系)

    SELECT ID FROM TABLE T
    INNER JOIN TABLE2 T2 ON T.ID = T2.ID
    LEFT JOIN TABLE3 T3 ON T2.ID = T3.ID

示例 2(非连续 LEFT 关系)

    SELECT ID FROM TABLE T
    INNER JOIN TABLE2 T2 ON T.ID = T2.ID
    LEFT JOIN TABLE3 T3 ON T.ID = T3.ID

唯一的区别是第二个Join是 onTable而第一个例子是 on Table2。我很确定他们会返回相同的东西,但我只是在这里寻找更有经验的答案。谢谢。

4

1 回答 1

3

结果没有区别。这些语句在功能上是等效的。

性能上的差异取决于具体的数据库和版本,以及数据。

我的经验是,在这样的简单情况下,两个查询之间的性能通常没有差异。SQL2008 优化器将根据统计信息(表的大小、索引的可用性)以任何有意义的顺序运行连接,无论您使用哪种方式编写此查询。

于 2012-04-26T17:09:30.650 回答