Có vẻ như đánh giá tham số.
Đây là một lời giải thích hay: Tôi ngửi thấy một thông số!
Về cơ bản, máy chủ sql có kế hoạch thực thi truy vấn được lưu trong bộ nhớ cache cho các tham số mà nó được chạy lần đầu tiên vì vậy kế hoạch này không tối ưu cho các giá trị mới mà bạn đang chuyển. Khi bạn chạy truy vấn trực tiếp, kế hoạch được tạo ngay tại thời điểm đó, vì vậy đó là lý do tại sao nó nhanh chóng.
Bạn có thể đánh dấu quy trình biên dịch lại theo cách thủ công bằng cách sử dụng sp_recompile hoặc sử dụng tùy chọn With Recompile trong định nghĩa của nó để nó được biên dịch trong mọi lần chạy.