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

SQL JOINとINのパフォーマンス?

    一般的に、IN およびJOIN さまざまな結果をもたらす可能性のあるさまざまなクエリです。

    SELECT  a.*
    FROM    a
    JOIN    b
    ON      a.col = b.col
    

    と同じではありません

    SELECT  a.*
    FROM    a
    WHERE   col IN
            (
            SELECT  col
            FROM    b
            )
    

    b.colでない限り ユニークです。

    ただし、これは最初のクエリの同義語です:

    SELECT  a.*
    FROM    a
    JOIN    (
            SELECT  DISTINCT col
            FROM    b
            )
    ON      b.col = a.col
    

    結合列がUNIQUEの場合 そのようにマークされているため、これらのクエリは両方ともSQL Serverで同じプランを生成します。 。

    そうでない場合は、IN JOINよりも高速です DISTINCTで 。

    パフォーマンスの詳細については、ブログのこの記事を参照してください:

    • IN vs. JOIN vs. EXISTS


    1. ExcelデータシートをOracleデータベースにロードします

    2. OracleストアドプロシージャのASとISの違いは何ですか?

    3. T-SQL開発者向けのヒントを含むTOP5MySQLDelete構文

    4. psycopg2ライブラリがロードされていないインポート:libssl.1.0.0.dylib