Karena saat Anda menggunakan nilai FIXED dengan AUTO-PARAMETERIZATION nonaktif, maka paket kueri mengetahui dengan PERSIS nilai apa yang diperlukan untuk menjalankan kueri. Jadi, rencana tersebut secara KHUSUS disesuaikan dengan nilai-nilai tersebut.
Namun ketika Anda menggunakan variabel, paket yang akan dimasukkan ke dalam Cache Kueri adalah paket yang berisi variabel berparameter - yang dapat diganti dengan variabel apa pun dan akan menggunakan kembali paket yang sama. Oleh karena itu, rencana ini harus lebih kuat dan umum untuk menangani "kasus rata-rata terbaik".
Di SQL Server 2008, Anda dapat mengatur apakah parameter sederhana diparameterisasikan secara otomatis atau tidak sehingga Anda mendapatkan paket "kasus rata-rata terbaik" secara konsisten - dengan segala kebaikan dan keburukannya.
Referensi:
EDIT - pada kinerja
Adapun kinerja, pengoptimal bisa salah - dalam hal ini melihat statistik for the exact values
dan merasa bahwa indeks tidak membantu (mungkin menjadi masalah titik kritis) jadi rencananya adalah untuk pemindaian berkerumun. Ini adalah seni yang bagus untuk memaksakan rencana kueri - tetapi jelas menggunakan indeks 50% lebih cepat untuk
- perangkat keras tertentu
- titik tertentu dalam distribusi data waktu
- nilai spesifik yang diberikan
Kecuali saya memiliki alasan yang sangat sangat bagus, saya tidak akan memainkan Pengoptimal Kueri (misalnya menggunakan petunjuk indeks) kecuali saya memiliki banyak data untuk membuktikannya akan selalu membuatnya lebih cepat.