sql >> Databasteknik >  >> RDS >> Sqlserver

Varför är denna CTE så mycket långsammare än att använda temptabeller?

Som du kan se i frågeplanen, med CTE:er, förbehåller sig motorn rätten att tillämpa dem i princip som en uppslagning, även när du vill ha en join.

Om det inte är tillräckligt säkert kan det köra det hela självständigt i förväg, i huvudsak generera en temptabell... låt oss bara köra den en gång för varje rad.

Detta är perfekt för de rekursionsfrågor de kan göra som magi.

Men du ser - i de kapslade kapslade looparna - där det kan gå fruktansvärt fel.
Du hittar redan svaret på egen hand genom att prova den riktiga temptabellen.



  1. Mysql lagrad procedur med java String Array

  2. Arkivering hängde på grund av KOMPATIBEL ORA-16484

  3. Kommer TSQL att ge snabbare resultat än lagrad procedur i SQL Server

  4. Använda MySQL relationsdatabaser på Arch Linux