1. ホーム
  2. sql

[解決済み】SQL JOINとINのパフォーマンスは?

2022-04-16 23:38:56

質問

JOINとINのどちらを使っても正しい結果が得られるケースがあるのですが...。 一般的にどちらの方がパフォーマンスが高いのでしょうか、またその理由は? また、どのデータベース・サーバーを使用しているかにどのくらい依存するのでしょうか? (参考までに、私はMSSQLを使用しています。)

どのように解決するのですか?

一般的には INJOIN は異なるクエリであり、異なる結果を得ることができます。

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 よりも高速です。 JOINDISTINCT .

パフォーマンスの詳細は、私のブログのこちらの記事をご覧ください。