Ein Explain Plan
hätte Ihnen gezeigt, warum genau Sie Exists verwenden sollten . Normalerweise kommt die Frage Exists vs Count(*) . Exists ist schneller. Warum?
-
In Bezug auf Herausforderungen durch NULL:wenn subquery
Nullzurückgibt , für IN wird die gesamte Abfrage zuNull. Also musst du auch damit umgehen. Aber mitExist, es ist lediglich einfalse. Viel einfacher zu bewältigen. EinfachINkann nichts mitNullvergleichen aberExistskann. -
z.B.
Exists (Select * from yourtable where bla = 'blabla');Sie erhalten wahr/falsch in dem Moment, in dem ein Treffer gefunden/zugeordnet wird . -
In diesem Fall
INnimmt quasi die Position desCount(*)ein um ALLE auszuwählen übereinstimmende Zeilen basierend aufWHEREweil es alle Werte vergleicht.
Aber vergiss auch das nicht:
EXISTSwird mit hoher Geschwindigkeit gegenINausgeführt :wenn die Ergebnisse der Unterabfrage sehr groß sind.INgeht vorEXISTS:wenn die Ergebnisse der Unterabfrage sehr klein sind.
Weitere Informationen finden Sie unter: