Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

sp_executesql chậm với các tham số

Thêm TÙY CHỌN (RECOMPILE) vào cuối

... AND SensorValue != -32767 OPTION (RECOMPILE) 

Tôi nghi ngờ bạn đang gặp phải hiện tượng "đánh hơi tham số"

Nếu đó là trường hợp, chúng tôi có thể để nó với TÙY CHỌN hoặc xem xét các lựa chọn thay thế

Cập nhật 1

Bài viết dưới đây sẽ giới thiệu cho các bạn về "tham số đánh hơi" http://pratchev.blogspot.be/2007/08/parameter-sniffing.html

Tôi khuyên bạn nên tìm hiểu kỹ về nội dung bên trong và bên ngoài bởi vì nó sẽ giúp bạn hiểu rõ hơn nhiều về nội bộ máy chủ sql (điều đó có thể xảy ra).

Nếu bạn hiểu nó, bạn sẽ biết rằng sự đánh đổi với việc biên dịch lại tùy chọn can là hiệu suất giảm nếu câu lệnh được thực thi rất thường.

Cá nhân tôi thêm biên dịch lại tùy chọn sau Tôi biết nguyên nhân gốc rễ là đánh hơi tham số và để nguyên nó trừ khi có vấn đề về hiệu suất. Viết lại một câu lệnh để tránh việc đánh hơi thông số xấu dẫn đến mất ý định và điều này làm giảm khả năng bảo trì. Nhưng có những trường hợp khi việc viết lại là hợp lý (hãy sử dụng các nhận xét tốt khi bạn làm như vậy).

Cập nhật 2

Cuốn sách hay nhất mà tôi có về chủ đề này là ở chương 32 có tên "Đánh hơi tham số:bạn thân nhất của bạn ... ngoại trừ khi nó không ở bên cạnh" của GRANT FRITCHEY

Nó được khuyến khích.

SQL Server MVP Deep Dives, Tập 2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ACOS () Ví dụ trong SQL Server

  2. Lưu trữ tệp trong SQL Server

  3. Các truy vấn ANSI JOIN và không phải ANSI JOIN có thực hiện khác nhau không?

  4. Mệnh đề SQL OVER () - khi nào và tại sao nó hữu ích?

  5. Xem liệu một Bảng có Ràng buộc DEFAULT trong SQL Server hay không bằng cách sử dụng OBJECTPROPERTY ()