Zoals je kunt zien in het queryplan, behoudt de engine zich bij CTE's het recht voor om ze in principe als een lookup toe te passen, zelfs als je een join wilt.
Als het niet zeker genoeg is, kan het het hele ding van tevoren onafhankelijk uitvoeren, in wezen een tijdelijke tabel genereren ... laten we het maar één keer uitvoeren voor elke rij.
Dit is perfect voor de recursiequery's die ze als magie kunnen doen.
Maar je ziet - in de geneste Nested Loops - waar het vreselijk mis kan gaan.
Je vindt het antwoord al zelf door de echte tijdelijke tabel te proberen.