Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah CTE menggunakan ruang di tempdb?

Saya akan mencoba untuk tidak menyalin/menempel MSDN

Tidak masalah.

CTE tidak tergantung pada eksekusi kueri:itu hanya konstruksi bahasa. Anggap saja sebagai tabel atau subquery turunan yang rapi.

Ini berarti bahwa kecuali untuk CTE rekursif (lihat nanti), semua CTE dapat dikodekan secara inline. Jika Anda menggunakan kode CTE sekali, itu untuk keterbacaan . Jika Anda menggunakan CTE dua kali atau lebih, maka CTE bersifat defensif:Anda tidak ingin membuat kesalahan dan membuat tabel turunan berbeda setiap penggunaan.

Dimana CTE digunakan dua kali atau lebih, maka kode tersebut akan dieksekusi dua kali atau lebih. Itu tidak akan dieksekusi sekali dan di-cache di tempdb.

Ringkasan:mungkin atau mungkin tidak, sama seperti jika kode itu sebaris.

Catatan:CTE rekursif hanyalah sebuah tabel turunan di dalam tabel turunan di dalam tabel turunan di dalam tabel turunan di dalam... jadi hal yang sama berlaku.

Anda dapat melihat ini di Artikel Tony Rogerson . Penggunaan tempdb akan tetap terjadi jika dikodekan sebaris. Dia juga mencatat bahwa menggunakan tabel temp bisa lebih baik karena ekspansi "makro" yang saya jelaskan di atas

FYI:hal yang sama berlaku untuk tampilan. Hanya makro.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Peringatan dan Operator di SQL Server

  2. Buat Kolom Terhitung yang Menggunakan Data dari Tabel Lain di SQL Server

  3. Kesalahan koneksi SQL intermiten yang aneh, perbaikan saat reboot, kembali setelah 3-5 hari (ASP.NET)

  4. Jalankan prosedur tersimpan di prosedur tersimpan lain di server SQL

  5. Apakah ada StartsWith atau Berisi di t sql dengan variabel?