Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menyelesaikan Prestasi Prosedur Tersimpan Yang Lemah Disebabkan oleh Penghidu Parameter dalam Pelayan SQL?
Prestasi Prosedur Tersimpan Yang Lemah Disebabkan Penghidu Parameter
Anda menghadapi masalah prestasi dengan prosedur tersimpan di mana parameter input (@MyDate) boleh NULL atau tarikh. Apabila prosedur pertama kali disusun dengan @MyDate sebagai NULL, pelaksanaan berikutnya menunjukkan prestasi yang lemah tanpa mengira nilai parameter sebenar.
Tingkah Laku Menghidu Parameter
SQL Server melaksanakan "parameter menghidu" untuk mengoptimumkan rancangan pelaksanaan berdasarkan nilai parameter semasa penyusunan. Ia menangkap nilai ini dalam cache prosedur dan menggunakannya untuk menganggarkan pelaksanaan masa hadapan.
Dalam kes ini, menghidu parameter menyebabkan masalah kerana ia menjana pelan pelaksanaan suboptimum untuk semua nilai parameter apabila @MyDate adalah NULL pada mulanya. Walaupun @MyDate ditetapkan secara eksplisit kepada NULL pada masa pelaksanaan, pelan cache kekal.
Melumpuhkan Penghidu Parameter
Anda telah menghadapi simptom klasik "penghidu parameter menjadi buruk," di mana pelan yang dijana untuk nilai parameter awal digunakan walaupun apabila ia tidak mewakili nilai sebenar hukuman mati. Untuk melumpuhkan penghidu parameter, anda memalsukan parameter dengan @MyDate_Copy.
Punca Punca dan Penyelesaian
Isu ini berpunca daripada pepijat SQL Server 2005 yang menghidu parameter boleh melakukan salah laku. Dalam SQL Server 2008, anda boleh mengurangkan isu ini dengan menggunakan pilihan OPTIMIZE FOR UNKNOWN, yang memaksa pengoptimum untuk mempertimbangkan semua nilai yang mungkin untuk parameter semasa penyusunan pelan.
Cerapan Tambahan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan Prestasi Prosedur Tersimpan Yang Lemah Disebabkan oleh Penghidu Parameter dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!