Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

CTE използват ли място в tempdb?

Ще се опитам да не копирам/поставям MSDN

Няма значение.

CTE е независим от изпълнението на заявка:той е само езикова конструкция. Мислете за това като за чиста извлечена таблица или подзаявка.

Това означава, че с изключение на рекурсивните CTE (вижте по-късно), всички CTE могат да бъдат кодирани в линия. Ако използвате CTE кода веднъж, това е за четимост . Ако използвате CTE два пъти или повече, тогава той е отбранителен:не искате да направите грешка и получената таблица да е различна при всяко използване.

Когато CTE се използва два пъти или повече, тогава този код ще бъде изпълнен два пъти или повече. Няма да се изпълни веднъж и да се кешира в tempdb.

Резюме:може или не, точно както ако кодът беше вграден.

Забележка:рекурсивният CTE е просто производна таблица вътре в производна таблица вътре в производна таблица вътре в производна таблица вътре в der... така че важи същото.

Можете да видите това в Статията на Тони Роджърсън . Използването на tempdb ще се случи така или иначе, ако се кодира вградено. Той също така отбелязва, че използването на временна таблица може да бъде по-добро поради „макро“ разширението, което обясних по-горе

FYI:същото важи и за изгледите. Само макроси.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да напиша UTF-8 знаци с помощта на групово вмъкване в SQL Server?

  2. Проблем със закръгляването във функциите LOG и EXP

  3. SQL Server - подслушване на параметри

  4. Как да избегнем грешката при деление на нула в SQL?

  5. SQL Server заявка xml атрибут за стойност на елемент