CTE
to tylko alias zapytania.
Może (lub nie) być uruchamiany ponownie za każdym razem, gdy jest używany.
Nie ma prostego sposobu na wymuszenie CTE
materializacja w SQL Server
(np. /*+ MATERIALIZE */
Oracle ) i musisz robić takie brudne sztuczki:
CTE
może poprawić wydajność, jeśli jest używany w planach wymagających tylko jednej oceny (np. HASH JOIN
, MERGE JOIN
itp.).
W tych scenariuszach tablica mieszająca zostanie zbudowana bezpośrednio na podstawie CTE
, podczas gdy użycie tabeli tymczasowej będzie wymagało oceny CTE
, przeciągając wyniki do tabeli tymczasowej i ponownie ją odczytując.