Có tất cả những điều có thể xảy ra.
Đầu tiên, Ivan G. nói đúng rằng các tham số kết nối và tùy chọn SET có thể khác nhau giữa SSMS và ứng dụng khách ASP.NET của bạn. Đó là điều đáng xem xét trong Hồ sơ, nếu bạn có quyền truy cập vào nó.
Thứ hai, nếu bạn đã chạy truy vấn của mình nhiều lần liên tiếp trong SSMS, có thể kết quả đang được lưu vào bộ nhớ đệm và đó là lý do tại sao nó chạy rất nhanh trong SSMS. Nếu nó chạy chậm trong lần đầu tiên bạn mở SSMS và cố gắng chạy nó, nhưng sau đó lại tăng tốc, đó là dấu hiệu cho thấy bộ nhớ đệm đang diễn ra.
Về lý do tại sao việc thêm một mệnh đề bổ sung vào một phép nối có thể làm chậm mọi thứ, thật khó để nói tại sao nếu không biết thêm về các bảng của bạn, nhưng không phải là không thể mà điều đó có thể làm được. Có chỉ mục nào trên BATCH_INGR
không bao gồm cả FACTORY
và INGR_CODE
? Bạn có thể cần một cái ngay bây giờ mà bạn đang bao gồm INGR_CODE
trong điều kiện tham gia của bạn.
Cách tốt nhất để tìm hiểu là xem kế hoạch truy vấn có và không có INGR_CODE
và xem nó khác nhau như thế nào. Con số chi phí cho một truy vấn có lớn hơn cho truy vấn kia không? Có quét bảng mà không có trước đây không? Tìm kiếm chỉ mục có chuyển thành quét chỉ mục không?