Man könnte in diesem Zusammenhang grob sagen:
Wenn ein Subselect schnell (10 ms) ist, aber für 1.000.000 Datensätze 1.000.000 mal schnell ausgeführt wird, so kann das dann insgesamt schon mal 'ne Weile dauern. -> 1.000.000 mal 10 ms -> ca. 2 Stunden und 45 Minuten.
Nur so als sehr grober Gedankengang, wenn man nach derartigen Performanzproblemen sucht.
Und nein: Das ist keine allgemeingültige Regel, sondern nur so ein Gedankenfetzen, den man im Hinterkopf behalten sollte.
Da sind wir völlig einer Meinung.
In diesem Fall muss aber noch ein anderes Problem vorliegen.
Ich habe hierbei folgende Laufzeiten erhalten (Test mit 1000 Datensätzen als Ergebnismenge):
Mit beiden Subselects gleichzeitig: ca. 1 Minute 10 Sekunden
Nur Subselect 1: ca. 0,7 Sekunden
Nur Subselect 2: ca. 1,1 Sekunden
Dass ich dann nicht davon ausgehen kann, dass es nur 1,8 Sekunden dauert, ist mir klar. Aber in diesem Fall ist das um den Faktor 60 langsamer.
Es ist auch nicht das erste
SQL, das ich optimiere. Eigentlich laufen solche Sachen immer auf meinem Tisch auf, wenn die Kollegen nicht mehr weiterwissen. Daher ist es mir schon peinlich, dass ich auf die banale Lösung mit dem Join nicht gekommen bin.
Ich habe mir die bisherige Abfrage gespeichert. Vielleicht habe ich irgendwann mal Zeit, das genauer zu untersuchen.