Từ kiến thức hạn chế của tôi về cách các kế hoạch truy vấn được biên dịch, lưu trữ và truy xuất bởi các truy vấn Tôi hiểu rằng một truy vấn đa câu lệnh hoặc thủ tục được lưu trữ sẽ tạo ra kế hoạch truy vấn sẽ được lưu trữ trong bộ đệm của kế hoạch truy vấn để truy vấn sử dụng trong các lần thực hiện trong tương lai.
Tôi nghĩ rằng kế hoạch này được truy xuất từ bộ đệm của kế hoạch truy vấn với hàm băm truy vấn, có nghĩa là nếu truy vấn được chỉnh sửa và thực hiện thì hàm băm khác nhau và một kế hoạch mới được tạo ra vì không thể tìm thấy hàm băm phù hợp trong bộ đệm của kế hoạch truy vấn.
Câu hỏi của tôi là: Nếu người dùng thực thi một câu lệnh là một trong những câu lệnh trong truy vấn đa câu lệnh thì nó có thể sử dụng phần có liên quan của kế hoạch truy vấn đã có trong bộ đệm cho truy vấn đa câu lệnh không? Tôi hy vọng câu trả lời là không bởi vì các giá trị băm rõ ràng sẽ không khớp, nhưng sẽ tốt hơn nếu băm từng câu lệnh trong một truy vấn đa câu lệnh để người dùng có thể sử dụng chúng để chạy các câu lệnh riêng lẻ từ truy vấn?
Tôi hy vọng có những điều phức tạp mà tôi không tính đến (Và đó là những điều tôi thực sự muốn biết) nhưng có vẻ như chúng ta có thể lưu trữ cùng một "kế hoạch tuyên bố" trong nhiều kế hoạch truy vấn chiếm nhiều không gian hơn và chiếm nhiều hơn CPU và thời gian để tạo.
Chỉ có thể được hiển thị sự thiếu hiểu biết của tôi mặc dù.
dbid
vàobjectid
cả hai đềuis_cache_key=1
vì vậy bạn sẽ không nhận được bất kỳ việc sử dụng lại các kế hoạch giữa các đối tượng được biên dịch khác nhau.