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

どのSQLクエリが高速ですか?参加基準またはWhere句でフィルタリングしますか?

    パフォーマンスに関しては、それらは同じです(そして同じ計画を作成します)

    論理的には、INNER JOINを置き換えても、意味のある操作を行う必要があります。 LEFT JOINを使用 。

    あなたの場合、これは次のようになります:

    SELECT  *
    FROM    TableA a
    LEFT JOIN
            TableXRef x
    ON      x.TableAID = a.ID
            AND a.ID = 1
    LEFT JOIN
            TableB b
    ON      x.TableBID = b.ID
    

    またはこれ:

    SELECT  *
    FROM    TableA a
    LEFT JOIN
            TableXRef x
    ON      x.TableAID = a.ID
    LEFT JOIN
            TableB b
    ON      b.id = x.TableBID
    WHERE   a.id = 1
    

    前者のクエリは、a.idの実際の一致を返しません。 1以外 、したがって、後者の構文(WHEREを使用) )論理的により一貫性があります。



    1. SQLServerでのデータ圧縮の概要

    2. トップ5のMySQLGUIツール(無料および有料)

    3. PostgreSQL JSON列をJSONBにアップグレードしますか?

    4. WindowsへのPostgreSQL9のインストール:TEMP環境パス内に書き込めません。