CTE
er kun et alias for forespørgslen.
Det kan (eller måske ikke) køres igen, hver gang det bruges.
Der er ingen ren måde at tvinge CTE
på materialisering i SQL Server
(som Oracles /*+ MATERIALIZE */
), og du skal lave beskidte tricks som dette:
CTE
kan forbedre ydeevnen, hvis den bruges i planer, der kun kræver én evaluering (såsom HASH JOIN
, MERGE JOIN
osv.).
I disse scenarier vil hash-tabellen blive bygget direkte fra CTE
, mens brug af temp-tabellen vil kræve evaluering af CTE
, trækker resultaterne ind i temp-tabellen og læser temp-tabellen igen.