Hayır.
Bu ya uzun zaman önce doğruydu (ve en azından SQL Server 2000'den beri değil), ya da asla doğru değildi ve DBA'nız tavsiyesini aşağıdakilerle karıştırdı :
Saklı yordamın başlangıcında geçici tablolar için tüm DDL deyimlerini (dizin oluşturma gibi) birlikte gruplandırmak önemlidir. Bu DDL ifadelerini bir araya getirerek şema değişikliğine bağlı gereksiz derlemeler önlenebilir.
Bu önerinin ardındaki gerekçenin başka bir açıklamasını bu sayfada bulabilirsiniz .
Bu Microsoft KB'ye bakarsak, saklı yordam yeniden derlemesinin nedeninin aşağıdakilerden biri olabileceğini görürüz (SQL Server 2005+):
- Şema değişti.
- İstatistikler değişti.
- DNR'yi yeniden derleyin.
- Ayarlama seçeneği değiştirildi.
- Sıcaklık tablosu değişti.
- Uzak satır kümesi değişti.
- Göz atma izinleri için değiştirildi.
- Sorgu bildirim ortamı değişti.
- MPI görünümü değişti.
- İmleç seçenekleri değişti.
- Yeniden derleme seçeneği ile.
Bir değişkenin (bir tablo değişkeni bile (yani @table_variable
)) bildirilmesi, bu olayların hiçbirini tetikleyemez, çünkü bir değişkenin bildirilmesi DDL olarak sayılmaz . Bir değişken (bir tablo değişkeni bile), yalnızca T-SQL programlamanız için kullanılan geçici bir nesnedir. Bu yüzden tablo değişkenleri hiçbir istatistikleri almak ve olan işlemler bağlı değildir . Bir değişkeni (tabloyu ya da değil) bildirmek proc derlemesini tetikleyemez.
Geçici bir tablo (yani oluşturma #temp_table
) ya da bir dizin, ancak, bir veritabanının fiziksel tanımını etkileyen DDL. Geçici tablolar ve dizinler, istatistiklere ve işlem denetimine sahip "gerçek" nesnelerdir, bu nedenle bunları oluşturmak yukarıdaki listede 1, 2 veya 5 olaylarından herhangi birini tetikleyebilir ve böylece bir proc derlemesini tetikleyebilir.