結合クエリとサブクエリのどちらが高速ですか? またその理由は何ですか? どちらを優先すべきですか? 質問する

結合クエリとサブクエリのどちらが高速ですか? またその理由は何ですか? どちらを優先すべきですか? 質問する

結合クエリがあります

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)

どちらが速いでしょうか、またその理由は?

どちらを優先すべきでしょうか?

ベストアンサー1

最初のクエリの方が速くなると予想されます。これは主に、同等性と明示的な JOIN があるためです。私の経験では、これは非常に遅い演算子です。SQL は通常、これを「OR」( )で区切られたIN一連の句として評価するためです。WHEREWHERE x=Y OR x=Z OR...

ただし、SQL 全般に言えることですが、結果はさまざまです。速度は、とりわけインデックス (両方の ID 列にインデックスがありますか? インデックスがあると非常に役立ちます...) に大きく依存します。

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

おすすめ記事