Ada banyak hal yang bisa terjadi.
Pertama, Ivan G. benar bahwa parameter koneksi dan opsi SET mungkin berbeda antara SSMS dan klien ASP.NET Anda. Itu adalah sesuatu yang layak untuk dilihat di Profiler, jika Anda memiliki akses ke sana.
Kedua, jika Anda menjalankan kueri beberapa kali berturut-turut di SSMS, kemungkinan hasilnya sedang di-cache dan itulah sebabnya ia berjalan sangat cepat di SSMS. Jika berjalan lambat saat pertama kali Anda membuka SSMS dan mencoba menjalankannya, tetapi kemudian mempercepat, itu tandanya sedang berlangsung caching.
Adapun mengapa menambahkan satu klausa tambahan ke gabungan dapat memperlambat segalanya, sulit untuk mengatakan mengapa tanpa mengetahui lebih banyak tentang tabel Anda, tetapi bukan tidak mungkin itu bisa melakukannya. Apakah ada indeks di atas BATCH_INGR
yang mencakup FACTORY
dan INGR_CODE
? Anda mungkin memerlukannya sekarang karena Anda menyertakan INGR_CODE
dalam kondisi bergabung Anda.
Cara terbaik untuk mengetahuinya adalah dengan melihat paket kueri dengan dan tanpa INGR_CODE
klausa dan lihat perbedaannya. Apakah angka biaya untuk satu permintaan lebih besar daripada yang lain? Apakah ada pemindaian tabel yang sebelumnya tidak ada? Apakah pencarian indeks berubah menjadi pemindaian indeks?