Bạn sẽ phải tha thứ cho sự ngây thơ của tôi vì tôi không phải là một DBA nhưng tôi hiểu rằng theo thời gian, số liệu thống kê về thay đổi cơ sở dữ liệu và một thủ tục được lưu trữ phải được biên dịch lại để cập nhật kế hoạch truy vấn với các số liệu thống kê mới nhất.
Giả sử tôi có một thủ tục được lưu trữ trong cơ sở dữ liệu của mình được biên dịch lại theo các thống kê mới nhất tại một khoảng thời gian thông thường, ý nghĩa của việc lót trong thủ tục được lưu trữ trong mã và gói nó trong một sp_executesql
câu lệnh là gì? Tôi có bị mất việc làm mới kế hoạch truy vấn đã từng xảy ra như là một phần của quá trình biên dịch lại thủ tục không?
Nếu có bất cứ điều gì khác (ngoài quyền) mà tôi cần xem xét trước khi tôi thực hiện thay đổi này thì tôi sẽ đánh giá cao những hiểu biết của bạn.
Tôi đọc cái này trên MSDN:
Khả năng của trình tối ưu hóa truy vấn SQL Server phù hợp với chuỗi Transact-SQL mới với kế hoạch thực hiện hiện có bị cản trở bởi các giá trị tham số thay đổi liên tục trong văn bản của chuỗi, đặc biệt là trong các câu lệnh Transact-SQL phức tạp.
Vì vậy, giả sử quy trình được lưu trữ mà tôi đang cố gắng sp_executesql
thực hiện và thực hiện có chứa một số tham số, điều này có nói rằng mặc dù kế hoạch thực hiện của tôi được lưu trong bộ nhớ cache, tôi có gặp khó khăn hơn khi SQL Server tìm và sử dụng lại không?