Tôi đã gặp vấn đề tương tự như người đăng ban đầu nhưng câu trả lời được trích dẫn không giải quyết được vấn đề cho tôi. Truy vấn vẫn chạy rất chậm từ một thủ tục được lưu trữ.
Tôi đã tìm thấy một câu trả lời khác ở đây "Tham số Sniffing", Cảm ơn Omnibuzz. Tóm tắt về cách sử dụng "Biến cục bộ" trong các truy vấn thủ tục được lưu trữ của bạn, nhưng hãy đọc bản gốc để hiểu thêm, đó là một bản ghi tuyệt vời. ví dụ:
Đường chậm:
CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
AS
BEGIN
SELECT *
FROM orders
WHERE customerid = @CustID
END
Cách nhanh chóng:
CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
DECLARE @LocCustID varchar(20)
SET @LocCustID = @CustID
SELECT *
FROM orders
WHERE customerid = @LocCustID
END
Hy vọng điều này sẽ giúp ích cho người khác, việc làm này đã giảm thời gian thực hiện của tôi từ hơn 5 phút xuống còn khoảng 6-7 giây.