En Explain Plan
kod>
skulle ha visat dig varför just du borde använda Exists
. Vanligtvis kommer frågan Exists vs Count(*)
. Finns
är snabbare. Varför?
-
När det gäller utmaningar som presenteras av NULL:när subquery returnerar
Null
, för IN blir hela fråganNull
. Så du måste hantera det också. Men medExist
, det är bara enfalsk
. Mycket lättare att hantera. Helt enkeltIN
kan inte jämföra något medNull
menFinns
kan. -
t.ex.
Finns (Välj * från din tabell där bla ='blabla');
du får sant/falskt i det ögonblick en träff hittas/matchas . -
I det här fallet
IN
tar liksom positionen förCount(*)
för att välja ALLA matchande rader baserat påWHERE
eftersom det jämför alla värden.
Men glöm inte heller detta:
FINNS
körs med hög hastighet motIN
:när underfrågans resultat är mycket stort.IN
går föreEXISTS
:när underfrågans resultat är mycket små.
Referens till för mer information: