sql >> Database >  >> RDS >> Sqlserver

Waarom is CTE beter dan cursor/afgeleide tabel/subquery's/temp-tabel enz.?

Een (niet-recursieve) CTE gebruikt geen cursors. Het is een set-based benadering. Dat is het grote verschil met het gebruik van cursors. Maar dat geldt ook voor het niet gebruiken van cursors in het algemeen.

Cursors moeten waar absoluut mogelijk worden vermeden (zoals we zeker weten allemaal).

Een CTE is niet per se beter dan het gebruik van een afgeleide tabel, maar leidt wel tot begrijpelijker TSQL-code. Een CTE is eigenlijk gewoon een afkorting voor een query of subquery; iets dat lijkt op een tijdelijke weergave.

De situatie waarin CTE's misschien niet de beste benadering zijn, is wanneer de queryplan-optimizer onnauwkeurige rijschattingen voor de CTE krijgt.

Gerelateerde vraag:Wat zijn de voor-/nadelen van het gebruik van een CTE?




  1. MySQL, beter om NULL of lege string in te voegen?

  2. Oracle GROUP_CONCAT() Equivalent

  3. Hoe een MySQL-database back-uppen en herstellen?

  4. PostgreSQL Meltdown-benchmarks