Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego CTE jest lepsze niż kursor / tabela pochodna / podzapytania / tabela tymczasowa itp.?

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?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL:sprawdzanie formatu wiadomości e-mail

  2. @@BŁĄD i/lub SPRÓBUJ - CATCH

  3. Jak mogę WYBRAĆ wiele kolumn w ramach przypadku, gdy na serwerze SQL Server?

  4. Hierarchiczna lista typów zdarzeń wyzwalających w SQL Server 2017

  5. Jak uzyskać tabelę nadrzędną, tabelę referencyjną, nazwę ograniczenia klucza obcego i kolumny w programie SQL Server — samouczek SQL Server / TSQL, część 71