sql >> Databáze >  >> RDS >> Sqlserver

Proč je CTE lepší než kurzorová/odvozená tabulka/poddotazy/dočasná tabulka atd.?

(Nerekurzivní) CTE nepoužívá kurzory. Je to přístup založený na množinách. To je velký rozdíl oproti používání kurzorů. Ale to platí o nepoužívání kurzorů obecně.

Kurzorům byste se měli vyhýbat tam, kde je to absolutně možné (jak jsem si jistý, že všichni víme).

CTE není nutně lepší než použití odvozené tabulky, ale vede ke srozumitelnějšímu kódu TSQL. CTE je ve skutečnosti jen zkratka pro dotaz nebo poddotaz; něco podobného dočasnému pohledu.

Situace, kdy CTE nemusí být nejlepší přístup, nastává, když optimalizátor plánu dotazů získá nepřesné odhady řádků pro CTE.

Související otázka:Jaké jsou výhody/nevýhody použití CTE?




  1. Spuštění skriptu .sql pomocí MySQL s JDBC

  2. ORA-12154 nedokázal vyřešit zadaný identifikátor připojení

  3. Android – SQLite – ZVOLTE MEZI datem1 A datem2

  4. Jak zjistím, zda je můj systém Oracle nastaven na podporu Unicode nebo vícebajtových znaků?