CTE
is slechts een alias voor de zoekopdracht.
Het kan (of niet) elke keer dat het wordt gebruikt opnieuw worden uitgevoerd.
Er is geen schone manier om CTE
. te forceren materialisatie in SQL Server
(zoals Oracle's /*+ MATERIALIZE */
), en je moet dit soort trucjes doen:
CTE
kan de prestaties verbeteren indien gebruikt in plannen die slechts één evaluatie vereisen (zoals HASH JOIN
, MERGE JOIN
enz.).
In deze scenario's wordt de hashtabel rechtstreeks vanuit de CTE
. gebouwd , terwijl het gebruik van de tijdelijke tabel vereist dat de CTE
. wordt geëvalueerd , trek de resultaten naar de tijdelijke tabel en lees de tijdelijke tabel opnieuw.