sql >> Databasteknik >  >> RDS >> Sqlserver

Varför är CTE bättre än markör/deriverad tabell/ subqueries/temp tabell etc.?

En (icke-rekursiv) CTE använder inte markörer. Det är ett uppsättningsbaserat tillvägagångssätt. Det är den stora skillnaden jämfört med att använda markörer. Men då gäller det att inte använda markörer i allmänhet.

Markörer bör undvikas där det är absolut möjligt (som jag är säker på att vi alla är medvetna om).

En CTE är inte nödvändigtvis bättre än att använda en härledd tabell, men leder till mer förståelig TSQL-kod. En CTE är egentligen bara en förkortning för en fråga eller underfråga; något som liknar en tillfällig vy.

Situationen där CTE kanske inte är det bästa tillvägagångssättet är när frågeplansoptimeraren får felaktiga raduppskattningar för CTE.

Relaterad fråga:Vilka är fördelarna/nackdelarna med att använda en CTE?




  1. Oracle 11g får alla matchade förekomster av ett reguljärt uttryck

  2. Hur du snabbar upp din SQL-server med hjälp av databasprestandaövervakning

  3. Formatera ett tal som valuta i SQLite

  4. Hur man krypterar en lagrad procedur i SQL Server