EDIT RINGKASAN Sesuai permintaan dari Damien_The_Unbeliever
Tujuannya adalah untuk mendapatkan informasi terbaik/paling banyak tentang nilai variabel ke SQL SEBELUM rencana dibuat, umumnya parameter sniffing melakukan ini. Mungkin ada alasan mengapa parameter sniffing 'dinonaktifkan' dalam kasus ini. Tanpa melihat representasi yang lebih baik dari kode aktual, kami tidak dapat benar-benar mengatakan apa solusinya atau mengapa masalah itu ada. Cobalah hal-hal di bawah ini untuk memaksa area yang terkena dampak untuk membuat rencana menggunakan nilai aktual.
*VERSI PANJANG DENGAN DETAIL LEBIH LANJUT *
Apakah ini proc tersimpan Anda yang sebenarnya? Apakah Anda memiliki nilai default untuk parameter Anda? Jika demikian, apa mereka?
Mengendus parameter dapat membantu - tetapi harus memiliki nilai parameter khas untuk membuat rencana dengan baik, dan jika tidak, tidak akan benar-benar membantu atau akan membuat rencana buruk berdasarkan nilai parameter yang tidak umum. Jadi, jika sebuah variabel memiliki nilai default null atau nilai yang bukan nilai tipikal saat pertama kali dijalankan dan rencana dikompilasi - itu menciptakan rencana yang buruk.
Jika orang lain menulis sproc ini - mereka mungkin sengaja 'menonaktifkan' parameter sniffing dengan variabel lokal karena suatu alasan. Aturan bisnis mungkin memerlukan struktur variabel ini.
Tujuannya adalah untuk mendapatkan informasi terbaik/paling banyak tentang nilai variabel ke SQL SEBELUM rencana dibuat, dan umumnya Parameter Sniffing melakukan ini. Tetapi ada hal-hal yang dapat membuatnya memengaruhi kinerja secara negatif, dan mungkin itulah sebabnya 'dinonaktifkan'. Sepertinya masih ada rencana yang dibuat dengan nilai atipikal untuk parameter atau info yang masih kurang - menggunakan parameter sniffing atau tidak.
Coba panggil kueri di dalam sproc dengan Gunakan sp_executesql untuk mengeksekusi kueri yang terpengaruh, memaksanya untuk membuat rencana untuk area itu dengan variabel aktual, dan lihat apakah itu lebih baik. Ini mungkin solusi Anda jika Anda harus memiliki nilai parameter tidak teratur semacam ini - buat procs tersimpan yang menjalankan bagian yang terpengaruh dan panggil nanti dari dalam prosedur tersimpan - setelah variabel menerima nilai tipikal.
Tanpa melihat representasi yang lebih baik dari kode aktual, sulit untuk melihat apa masalahnya. Semoga info ini membantu -