Lisää
NOT IN vs NOT EXISTS
Kumpi näistä kyselyistä on nopeampi?
NOT EXISTS:
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE NOT EXISTS (
SELECT 1
FROM Northwind..[Order Details] od
WHERE p.ProductId = od.ProductId)
Tai NOT IN:
SELECT ProductID, ProductName
FROM Northwind..Products p
WHERE p.ProductID NOT IN (
SELECT ProductID
FROM Northwind..[Order Details])
Kyselyn suoritussuunnitelman mukaan molemmat tekevät saman asian. Jos näin on, kumpi on suositeltava muoto?
Tämä perustuu NorthWind-tietokantaan.
[Edit]
Löysin juuri tämän hyödyllisen artikkelin: http://weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx
Taidan pitää kiinni NOT EXISTSistä.
502
3
Jos toteutussuunnittelija sanoo, että ne ovat samat, ne ovat samat. Käytä sitä, joka tekee aikomuksestasi selvemmän - tässä tapauksessa toista.
Itse asiassa uskon, että tämä olisi nopein:
Se riippuu...
ei olisi suhteellisen hidas ei ole't paljon rajoittaa kokoa, mitä kysely tarkistaa, onko ne avain on. EXISTS olisi parempi tässä tapauksessa.
Mutta riippuen DBMS:stä'n optimoijasta, tämä voi olla sama asia.
Esimerkki siitä, milloin EXISTS on parempi.