Více na
NOT IN vs NOT EXISTS
Který z těchto dotazů je rychlejší?
NEEXISTUJE:
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE NOT EXISTS (
SELECT 1
FROM Northwind..[Order Details] od
WHERE p.ProductId = od.ProductId)
Nebo NENÍ V:
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE p.ProductID NOT IN (
SELECT ProductID
FROM Northwind..[Order Details])
Plán provádění dotazu říká, že oba dělají totéž. Pokud je to tak, který tvar je doporučený?
Toto vychází z databáze NorthWind.
[Upravit]
Právě jsem našel tento užitečný článek: http://weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx
Myslím, že zůstanu u NOT EXISTS.
502
3
Pokud plánovač provedení tvrdí, že jsou stejné, jsou stejné. Použijte ten, který učiní váš záměr zřejmějším - v tomto případě druhý.
Vlastně si myslím, že by to bylo nejrychlejší:
To záleží na..
by nebylo relativně pomalé není'moc omezit velikost toho, co dotaz zkontrolovat, zda je klíč je v. EXISTS by bylo v tomto případě vhodnější.
Ale v závislosti na optimalizátoru DBMS'by to nemuselo být jinak.
Jako příklad, kdy je lepší EXISTS