NOT IN vs NOT EXISTS
どちらのクエリが速いか?
NOT EXISTSです。
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE NOT EXISTS (
SELECT 1
FROM Northwind..[Order Details] od
WHERE p.ProductId = od.ProductId)
または NOT IN:
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE p.ProductID NOT IN (
SELECT ProductID
FROM Northwind..[Order Details])
クエリの実行プランでは、どちらも同じことをしていることになっています。 その場合、どちらが推奨される形式なのでしょうか?
これは、NorthWindデータベースに基づいています。
[編集]をクリックしてください。
ちょうどこの役に立つ記事を見つけました。 http://weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx
私はNOT EXISTSでいこうと思います。
502
3
実行計画者が同じだと言えば、同じだと言えます。あなたの意図がより明確になる方を使ってください - この場合は2番目です。
実は、これが一番早いと思っています。
それは依存しています。
は比較的遅くはないでしょう。キーが入っているかどうかをチェックするクエリのサイズはそれほど制限されません。この場合、EXISTSが望ましいでしょう。
しかし、DBMSのオプティマイザによっては、これと変わらないかもしれません。
EXISTSの方が良い場合の例としては