3

これらの2つのステートメント/例の間で、結果に違いがありますか、それともパフォーマンスに違いがありますか?

例1(連続した内部関係)

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

例2(非連続の内部関係)

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

またはこれらの2つのステートメント/例の間:

例1(連続した左の関係)

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

例2(連続しない左の関係)

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

唯一の違いは、2番目Joinが上にあるのTableに対し、最初の例は上にあることTable2です。彼らは同じものを返すと確信していますが、私はここでより経験豊富な答えを探しています。ありがとう。

4

1 に答える 1

3

結果に違いはありません。ステートメントは機能的に同等です。

パフォーマンスの違いは、特定のデータベースとバージョン、およびデータによって異なります。

私の経験では、このような単純なケースでは、通常、2つのクエリ間でパフォーマンスに違いはありません。SQL2008オプティマイザは、このクエリの記述方法に関係なく、統計(テーブルのサイズ、インデックスの可用性)に従って、意味のある順序で結合を実行します。

于 2012-04-26T17:09:30.650 に答える