FYI - Anda perlu mengetahui hal lain saat bekerja dengan SQL 2005 dan menyimpan procs dengan parameter.
SQL Server akan mengkompilasi rencana eksekusi proc yang disimpan dengan parameter pertama yang digunakan. Jadi jika Anda menjalankan ini:
usp_QueryMyDataByState 'Rhode Island'
Rencana eksekusi akan bekerja paling baik dengan data negara bagian kecil. Tetapi jika seseorang berbalik dan berlari:
usp_QueryMyDataByState 'Texas'
Rencana eksekusi yang dirancang untuk data berukuran Rhode-Island mungkin tidak seefisien dengan data berukuran Texas. Ini dapat menghasilkan hasil yang mengejutkan ketika server di-restart, karena rencana eksekusi yang baru dibuat akan ditargetkan pada parameter apa pun yang digunakan terlebih dahulu - belum tentu yang terbaik. Rencana tidak akan dikompilasi ulang sampai ada alasan besar untuk melakukannya, seperti jika statistik dibangun kembali.
Di sinilah rencana kueri masuk, dan SQL Server 2008 menawarkan banyak fitur baru yang membantu DBA menyematkan rencana kueri tertentu untuk jangka panjang, apa pun parameter yang dipanggil terlebih dahulu.
Kekhawatiran saya adalah ketika Anda membangun kembali proc Anda yang tersimpan, Anda memaksa rencana eksekusi untuk dikompilasi ulang. Anda menyebutnya dengan parameter favorit Anda, dan tentu saja itu cepat - tetapi masalahnya mungkin bukan pada proc yang disimpan. Mungkin saja proc yang disimpan dikompilasi ulang di beberapa titik dengan serangkaian parameter yang tidak biasa dan dengan demikian, rencana kueri yang tidak efisien. Anda mungkin tidak memperbaiki apa pun, dan Anda mungkin menghadapi masalah yang sama saat server dimulai ulang atau paket kueri dikompilasi ulang.