結合クエリがあります
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
一連の句として評価するためです。WHERE
WHERE x=Y OR x=Z OR...
ただし、SQL 全般に言えることですが、結果はさまざまです。速度は、とりわけインデックス (両方の ID 列にインデックスがありますか? インデックスがあると非常に役立ちます...) に大きく依存します。
どちらが速いかを 100% 確実に判断する唯一の方法は、パフォーマンス トラッキングをオンにして (IO 統計が特に便利です)、両方を実行することです。実行の合間には必ずキャッシュをクリアしてください。