Allerdings wird in beiden Beispielen die komplette Datenmenge von 500.000 Adressen durchlaufen.
Das ist aber auch nachvollziehbar: Das Exist muss ja für jeden Datensatz ausgewertet werden bevor der akzeptiert oder übersprungen werden kann.
Na eigentlich würde es ja reichen, wenn beim ersten Fund abgebrochen wird.
Gefunden ist gefunden und noch mehr finden ändert nichts.
exists(...)
vs
count(...) > 0
Ja, beim Count könnte man zwar auch schon beim Ersten abbrechen, aber nicht, wenn Zählen und Vergleich nicht in einer gemeinsamen optimierbaren Operation stattfinden.
count(...) > 3
könnte optimiert ja auch schon beim dritten Fund abbrechen.
Kommt also drauf an, wie das
DBMS die Aufgabe löst.
* erst suchen und dann schauen, was/wieviel rauskam
* speziell suchen und dabei gleich auswerten