Rumah >pangkalan data >tutorial mysql >Mengapa Prosedur Tersimpan Saya Berjalan Lebih Pantas dalam SSMS Daripada dalam SqlCommand?

Mengapa Prosedur Tersimpan Saya Berjalan Lebih Pantas dalam SSMS Daripada dalam SqlCommand?

DDD
DDDasal
2024-12-18 16:45:11531semak imbas

Why Does My Stored Procedure Run Faster in SSMS Than in SqlCommand?

Ketidaksamaan Prestasi dengan Prosedur Tersimpan: SqlCommand lwn. SSMS

Masa pelaksanaan prosedur tersimpan boleh berbeza dengan ketara antara SQL Server Management Studio ( SSMS) dan System.Data.SqlClient.SqlCommand, walaupun tanpa parameter menghidu. Punca punca mungkin terletak pada pilihan SET berbeza yang didayakan oleh setiap persekitaran pelaksanaan.

Dengan menggunakan SQL Server Profiler, didapati bahawa SSMS melaksanakan beberapa arahan SET yang ditiadakan oleh Penyedia Data Pelanggan .NET Sql. Pilihan SET ini boleh mempengaruhi pelan pertanyaan dan prestasi. Satu pilihan SET penting yang muncul sebagai punca dalam kes ini ialah:

SET ARITHABORT ON

Apabila pilihan SET ini didayakan, pertanyaan dengan operasi aritmetik yang berpotensi mengakibatkan limpahan, pembahagian dengan sifar atau keadaan luar biasa lain akan berhenti sebelum waktunya. Tingkah laku ini berbeza daripada tetapan lalai SET ARITHABORT OFF, yang membenarkan pengecualian berlaku.

Akibatnya, pelan pelaksanaan dan prestasi prosedur tersimpan boleh dipengaruhi oleh pilihan SET ARITHABORT. Jika operasi aritmetik dalam prosedur tersimpan tertakluk kepada tetapan ini, ia boleh menyebabkan perbezaan dalam masa pelaksanaan antara SSMS dan SqlCommand.

Untuk mengurangkan isu ini, adalah dinasihatkan untuk menyemak dengan teliti pilihan SET yang digunakan oleh aplikasi yang menyambung ke SQL Server. Dengan menggunakan pilihan SET yang sama dalam SqlCommand seperti yang digunakan oleh SSMS, ketidakkonsistenan prestasi boleh dielakkan. Selain itu, memanfaatkan SQL Server Profiler untuk mengenal pasti pilihan SET aktif ialah teknik penyahpepijatan yang berharga.

Faktor lain, seperti parameter rentetan sambungan, gelagat transaksi dan tetapan MARS (Multiple Active Result Sets), juga boleh memberi kesan kepada prestasi dan harus dianggap sebagai faktor penyumbang yang berpotensi.

Atas ialah kandungan terperinci Mengapa Prosedur Tersimpan Saya Berjalan Lebih Pantas dalam SSMS Daripada dalam SqlCommand?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn