Een Explain Plan
zou je hebben laten zien waarom je precies Exists . zou moeten gebruiken . Meestal komt de vraag Exists vs Count(*) . Exists is sneller. Waarom?
-
Met betrekking tot uitdagingen aanwezig door NULL:wanneer subquery
Nullretourneert , voor IN wordt de hele zoekopdrachtNull. Daar moet je dus ook mee om kunnen gaan. Maar metExist, het is slechts eenfalse. Veel gemakkelijker om mee om te gaan. GewoonINkan niets vergelijken metNullmaarExistskan. -
bijv.
Exists (Select * from yourtable where bla = 'blabla');je krijgt waar/onwaar op het moment dat één treffer is gevonden/overeenkomt . -
In dit geval
INneemt min of meer de positie in van deCount(*)om ALLE te selecteren overeenkomende rijen op basis van deWHEREomdat het alle waarden vergelijkt.
Maar vergeet dit ook niet:
EXISTSvoert met hoge snelheid uit tegenIN:wanneer de resultaten van de subquery erg groot zijn.INloopt voor opEXISTS:wanneer de resultaten van de subquery erg klein zijn.
Verwijzing naar voor meer details: