CTE
je pouze alias pro dotaz.
Může (nebo nemusí) být znovu spuštěn při každém použití.
Neexistuje žádný čistý způsob, jak vynutit CTE
materializace v SQL Server
(jako /*+ MATERIALIZE */
společnosti Oracle ), a musíte dělat špinavé triky, jako je tento:
CTE
může zlepšit výkon, pokud se použije v plánech vyžadujících pouze jedno vyhodnocení (jako HASH JOIN
, MERGE JOIN
atd.).
V těchto scénářích bude hashovací tabulka vytvořena přímo z CTE
, zatímco použití dočasné tabulky bude vyžadovat vyhodnocení CTE
, přetažením výsledků do dočasné tabulky a přečtením této tabulky ještě jednou.