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

TSQL có trả lại kết quả nhanh hơn thủ tục được lưu trữ trong SQL Server không

Trong các truy vấn của bạn, hãy thêm OPTION(OPTIMIZE FOR UNKNOWN) (như mệnh đề cuối cùng) để ngăn chặn việc đánh hơi tham số. Để biết cú pháp và giải thích, hãy xem tài liệu về Gợi ý truy vấn .

Những gì SQL Server thực hiện lần đầu tiên nó chạy một Thủ tục được lưu trữ là tối ưu hóa (các) kế hoạch thực thi cho các tham số đã được chuyển cho nó. Điều này được thực hiện trong một quá trình được gọi là Parameter Sniffing .

Nói chung, các kế hoạch thực thi được SQL Server lưu trong bộ nhớ cache để SQL Server không phải biên dịch lại mỗi lần cho cùng một truy vấn. Lần tiếp theo thủ tục được chạy, SQL Server sẽ sử dụng lại (các) kế hoạch thực thi cho các truy vấn trong đó ... Tuy nhiên, (các) kế hoạch thực thi có thể hoàn toàn không hiệu quả nếu bạn gọi nó (chúng) với các tham số khác nhau .

Tùy chọn tôi đã cung cấp cho bạn sẽ nói với trình biên dịch SQL rằng kế hoạch thực thi không nên được tối ưu hóa cho cụ thể tham số, nhưng thay vì cho bất kỳ tham số được chuyển cho Thủ tục đã lưu trữ.

Để trích dẫn tài liệu:

Trong một số trường hợp, Thủ tục được lưu trữ có thể được hưởng lợi từ tính năng Đánh hơi tham số, trong một số trường hợp thì không. Đối với các Thủ tục được lưu trữ không được hưởng lợi từ Paramater Sniffing, bạn có thể thêm tùy chọn vào từng truy vấn sử dụng bất kỳ tham số nào của Thủ tục được Lưu trữ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Stuff và 'For Xml Path' hoạt động như thế nào trong SQL Server?

  2. Làm cách nào tôi có thể xem tất cả các ký tự đặc biệt được phép trong trường varchar hoặc char trong SQL Server?

  3. Chọn dữ liệu từ hai máy chủ khác nhau trong SQL Server

  4. Cách tạo câu lệnh bảng thả cho tất cả các bảng trong cơ sở dữ liệu - Hướng dẫn SQL Server / T-SQL Phần 48

  5. SQL Server:kết hợp nhiều hàng thành một hàng