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

SQL Server:Truy vấn nhanh, nhưng chậm so với thủ tục

Tôi đã gặp vấn đề tương tự như người đăng ban đầu nhưng câu trả lời được trích dẫn không giải quyết được vấn đề cho tôi. Truy vấn vẫn chạy rất chậm từ một thủ tục được lưu trữ.

Tôi đã tìm thấy một câu trả lời khác ở đây "Tham số Sniffing", Cảm ơn Omnibuzz. Tóm tắt về cách sử dụng "Biến cục bộ" trong các truy vấn thủ tục được lưu trữ của bạn, nhưng hãy đọc bản gốc để hiểu thêm, đó là một bản ghi tuyệt vời. ví dụ:

Đường chậm:

CREATE PROCEDURE GetOrderForCustomers(@CustID varchar(20))
AS
BEGIN
    SELECT * 
    FROM orders
    WHERE customerid = @CustID
END

Cách nhanh chóng:

CREATE PROCEDURE GetOrderForCustomersWithoutPS(@CustID varchar(20))
AS
BEGIN
    DECLARE @LocCustID varchar(20)
    SET @LocCustID = @CustID

    SELECT * 
    FROM orders
    WHERE customerid = @LocCustID
END

Hy vọng điều này sẽ giúp ích cho người khác, việc làm này đã giảm thời gian thực hiện của tôi từ hơn 5 phút xuống còn khoảng 6-7 giây.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để truy vấn các giá trị từ các nút xml?

  2. Cách thêm AM / PM vào giá trị thời gian trong SQL Server (T-SQL)

  3. Giới thiệu về OPENJSON với các ví dụ (SQL Server)

  4. Trả về loại của trình kích hoạt DML trên bảng trong SQL Server

  5. Tạo bảng HTML với SQL FOR XML