Mir wäre lieber, wenn SQL viel öfters temporäre Tabellen erstellen würde und auch Indizes auf diese erstellt, dann müsste ich dies nicht dauernd selber machen.
Durch die ständige Wiederholung der Subselects auf der Einzelsatzebene ist es wirklich effektiver ein Zwischenergebnis mit Index zu erstellen als alle in ein dickes SQL zu packen.
Laufzeiten von Minuten sinken da oft auf Sekunden.

Ich habe schon früher temporäre Tabellen vorab erstellt, was heute ja per "Create as Select" viel einfacher ist.
Selbst wenn das tausende Sätze gibt, dauert das häufig unter einer Sekunde.
Mit anschließendem Index und verjoinen auf andere (auch temporäre) Daten gewinnt man enorm.

Der Optimizer kann ja auch nur raten was man eigentlich will.
Also gedanklich manchmal einen oder 2 Schritt/e zurück und dann noch mal.