sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor er CTE bedre end cursor/afledt tabel/ underforespørgsler/temptabel osv.?

En (ikke-rekursiv) CTE bruger ikke markører. Det er en sætbaseret tilgang. Det er den store forskel i forhold til at bruge markører. Men så er det rigtigt med ikke at bruge markører generelt.

Markører bør undgås, hvor det er absolut muligt (som jeg er sikker på, vi alle er klar over).

En CTE er ikke nødvendigvis bedre end at bruge en afledt tabel, men fører til mere forståelig TSQL-kode. En CTE er egentlig bare en forkortelse for en forespørgsel eller underforespørgsel; noget, der ligner en midlertidig udsigt.

Den situation, hvor CTE'er måske ikke er den bedste tilgang, er, når forespørgselsplanoptimeringsværktøjet får unøjagtige rækkeestimater for CTE'en.

Relateret spørgsmål:Hvad er fordelene/ulemperne ved at bruge en CTE?




  1. PostgreSQL JOIN med array type med array elementer rækkefølge, hvordan implementeres?

  2. Sådan fungerer TRUNCATE() i MariaDB

  3. Oprettelse af en webapp fra bunden ved hjælp af Python Flask og MySQL:Del 3

  4. docker postgres pgadmin lokal forbindelse