Tidak.
Ini dulu benar sejak lama (dan tidak lagi, setidaknya sejak SQL Server 2000), atau itu tidak pernah benar dan DBA Anda hanya mengacaukan rekomendasinya dengan yang berikut :
Penting untuk mengelompokkan semua pernyataan DDL (seperti membuat indeks) untuk tabel sementara pada awal prosedur tersimpan. Dengan menempatkan pernyataan DDL ini bersama-sama kompilasi yang tidak perlu karena perubahan skema dapat dihindari.
Anda dapat menemukan penjelasan lain tentang alasan di balik rekomendasi ini di halaman ini .
Jika kita melihat pada Microsoft KB ini , kita melihat bahwa penyebab kompilasi ulang prosedur tersimpan dapat menjadi salah satu dari yang berikut ini (SQL Server 2005+):
- Skema berubah.
- Statistik berubah.
- Kompilasi ulang DNR.
- Setel opsi berubah.
- Tabel temp berubah.
- Rowset jarak jauh berubah.
- Untuk menelusuri perms berubah.
- Lingkungan pemberitahuan kueri berubah.
- Tampilan MPI berubah.
- Opsi kursor berubah.
- Dengan opsi kompilasi ulang.
Mendeklarasikan variabel - bahkan variabel tabel (mis. @table_variable
) - tidak dapat memicu semua peristiwa ini, jelas, karena mendeklarasikan variabel tidak dihitung sebagai DDL . Variabel (bahkan variabel tabel) adalah objek sementara yang digunakan secara eksklusif untuk pemrograman T-SQL Anda. Itu sebabnya variabel tabel tidak mendapatkan statistik dan tidak terikat oleh transaksi . Mendeklarasikan variabel (tabel atau tidak) tidak dapat memicu kompilasi ulang proc.
Membuat tabel temp (yaitu #temp_table
) atau indeks, bagaimanapun, adalah DDL yang mempengaruhi definisi fisik dari database. Temp tabel dan indeks adalah objek "nyata" dengan statistik dan kontrol transaksional, oleh karena itu membuat mereka dapat memecat salah satu peristiwa 1, 2, atau 5 dalam daftar di atas dan dengan demikian memicu kompilasi ulang proc.