@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 .