Wie schon beschrieben, CTE's sind alternative Schreibweisen.
Was macht SQL eigentlich?
Da alle nur mit Wasser kochen, i.W. nichts anderes als ein Programmierer auch.
Der Programmierer überlegt sich vorher seine Zugriffe (LF's) bevor er loslegt. Anschließend werden die Zugriffe von links nach rechts vorgenommen.
Dabei wird links 1 Satz gelesen und nach rechts die passenden Daten je Join ermittelt, wobei dieser Join über Index am Besten ist um die Zugriffe zu reduzieren.
Die Schwierigkeit besteht halt, die Beziehung und die Where-Klausel unter einen Hut zu bringen.
Der Optimizer kann halt nur versuchen, das beste herauszuholen.

CTE's verkürzen nur die Schreibweise aber sparen nicht die Zugriffe!

Was temporäre Tabellen in QTEMP angeht so kann man hier noch mal mit Indizes beschleunigen.
Das Schöne an SQL:
DROP TABLE löscht automatisch auch alle Indizes!

Und wer mit Transaktionen arbeitet:
Hier kann man kurzfristig mit "Set Transaction" die Transaktion aussetzen bzw. bei einigen Befehlen (Update/Insert/Delete) "WITH NC" für QTEMP-Tabellen anwenden.