sql >> データベース >  >> RDS >> Sqlserver

結合句の順序が SQL Server のクエリ プランに影響するのはなぜですか?

    以前のすべての回答に反対する必要があります。理由は簡単です。左の結合の順序を変更すると、クエリが論理的に異なるため、異なる結果セットが生成されます。自分の目で確かめてください:

    SELECT 1 AS a INTO #t1
    UNION ALL SELECT 2
    UNION ALL SELECT 3
    UNION ALL SELECT 4;
    
    SELECT 1 AS b INTO #t2
    UNION ALL SELECT 2;
    
    SELECT 1 AS c INTO #t3
    UNION ALL SELECT 3;
    
    SELECT a, b, c 
    FROM #t1 LEFT JOIN #t2 ON #t1.a=#t2.b
      LEFT JOIN #t3 ON #t2.b=#t3.c
    ORDER BY a;
    
    SELECT a, b, c 
    FROM #t1 LEFT JOIN #t3 ON #t1.a=#t3.c
      LEFT JOIN #t2 ON #t3.c=#t2.b
    ORDER BY a;
    
    a           b           c
    ----------- ----------- -----------
    1           1           1
    2           2           NULL
    3           NULL        NULL
    4           NULL        NULL
    
    (4 row(s) affected)
    
    a           b           c
    ----------- ----------- -----------
    1           1           1
    2           NULL        NULL
    3           NULL        3
    4           NULL        NULL
    


    1. MySQLからJavaコードを呼び出す方法は?

    2. SQL Server 2008 のインストール

    3. MariaDB JSON_REPLACE()の説明

    4. T-SQL:2 つのテーブルの比較 - 2 番目のテーブルに存在しないレコード