CTE (nierekurencyjne) nie używa kursorów. Jest to podejście oparte na zbiorze. To duża różnica w porównaniu do używania kursorów. Ale tak jest w przypadku ogólnego nieużywania kursorów.
Należy unikać kursorów tam, gdzie jest to absolutnie możliwe (co jestem pewien, że wszyscy jesteśmy tego świadomi).
CTE niekoniecznie jest lepsze niż użycie tabeli pochodnej, ale prowadzi do bardziej zrozumiałego kodu TSQL. CTE jest tak naprawdę tylko skrótem dla zapytania lub podzapytania; coś podobnego do tymczasowego widoku.
Sytuacja, w której CTE może nie być najlepszym podejściem, to sytuacja, w której optymalizator planu zapytań uzyskuje niedokładne oszacowania wierszy dla CTE.
Powiązane pytanie:Jakie są zalety/wady korzystania z CTE?