1. ホーム
  2. sql

[解決済み] SQL JoinsとSQL Subqueriesの比較(パフォーマンス)?

2022-08-10 10:14:35

質問

を持つかどうかを知りたいのですが。 に参加する クエリのようなものです。

Select E.Id,E.Name from Employee E join Dept D on E.DeptId=D.Id

サブクエリ のようなものです。

Select E.Id,E.Name from Employee Where DeptId in (Select Id from Dept)

私が 性能 という2つのクエリのどちらが速いか、そして なぜ ?

また、どちらか一方を選ぶべきタイミングはありますか?

これはあまりにも些細なことで、以前に質問されたのであれば申し訳ありませんが、私はそれについて混乱しています。また、それはあなた方が私に提案することができれば素晴らしいことです。 ツール 私は2つのクエリのパフォーマンスを測定するために使用する必要があります。どうもありがとうございました。

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

最初のクエリの方が速くなると思います。 私の経験では IN は非常に遅い演算子です。なぜなら SQL は通常、一連の WHERE 句を "OR"で区切って評価するためです ( WHERE x=Y OR x=Z OR... ).

しかし、ALL THINGS SQLと同様に、あなたのマイル数は異なるかもしれません。 速度はインデックスに大きく依存します (両方の ID 列にインデックスがありますか? それは多くの助けになります...)。

どちらが速いか100%確実に判断する唯一の方法は、パフォーマンス トラッキング (IO Statistics は特に便利です) をオンにして、両方を実行することです。 実行の間にキャッシュをクリアすることを確認してください!