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

Menggunakan dengan vs mendeklarasikan tabel sementara:kinerja/perbedaan?

@table sintaks membuat variabel tabel (tabel aktual di tempdb ) dan mewujudkan hasilnya.

WITH sintaks mendefinisikan Ekspresi Tabel Umum yang tidak terwujud dan hanya Tampilan sebaris.

Sebagian besar waktu Anda akan lebih baik menggunakan opsi kedua. Anda menyebutkan bahwa ini ada di dalam suatu fungsi. Jika ini adalah TVF maka sebagian besar waktu Anda ingin ini menjadi inline daripada multi pernyataan sehingga mereka dapat diperluas oleh pengoptimal - ini akan langsung melarang penggunaan variabel tabel.

Namun terkadang (katakanlah kueri yang mendasarinya mahal dan Anda ingin menghindarinya dieksekusi beberapa kali) Anda mungkin menentukan bahwa mewujudkan hasil antara meningkatkan kinerja dalam beberapa kasus tertentu. Ada saat ini tidak mungkin memaksa ini untuk CTE (tanpa memaksa panduan rencana setidaknya )

Dalam kemungkinan itu Anda (secara umum) memiliki 3 opsi. Sebuah @tablevariable , #localtemp tabel dan ##globaltemp meja. Namun hanya yang pertama yang diizinkan untuk digunakan di dalam suatu fungsi.

Untuk informasi lebih lanjut mengenai perbedaan antara variabel tabel dan tabel #temp lihat di sini .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Haruskah saya menggunakan tipe data SQL_Variant?

  2. Bagaimana saya bisa mendapatkan jalur cadangan default untuk SQL Server 2008 Express R2 secara terprogram menggunakan C#?

  3. Perilaku indeks unik, kolom varchar, dan spasi (kosong)

  4. Apa jenis tunggu PAGEIOLATCH_SH di SQL Server?

  5. Penyatuan Koneksi di .NET/SQL Server?