Tôi đang gặp sự cố với MS SQL Server 2008 là:Truy vấn SQL Server mất nhiều thời gian hơn với tham số hơn với chuỗi không đổi
Khi tôi thực hiện truy vấn bằng chuỗi được mã hóa cứng làm tham số, truy vấn của tôi chạy nhanh nhưng khi tôi sử dụng tham số chuỗi thay vào đó, truy vấn mất nhiều thời gian hơn!
Truy vấn chuỗi không đổi mất 1 giây trong khi truy vấn còn lại mất 11 giây.
Dưới đây là các mã rống lên:
liên tục chuỗi (1 giây):
SELECT *
FROM VIEWCONTENTS
WHERE COUNTRY = 'ZA'
AND CONTENTTYPE = 'A'
AND TASK = 'R23562';
tham số (11 giây):
DECLARE @country AS CHAR(2);
SET @country = 'ZA';
SELECT *
FROM VIEWCONTENTS
WHERE COUNTRY = @country
AND CONTENTTYPE = 'A'
AND TASK = 'R23562'
Google "tham số sniffing" .... – granadaCoder
Bạn đã so sánh kế hoạch thực hiện chưa? Đồng thời đọc: http://www.sqlperformance.com/2013/08/t-sql-queries/parameter-sniffing-embedding-and-the-recompile-options –
Là trình tối ưu hóa không biết giá trị của địa phương biến trong truy vấn thứ hai, nhiều khả năng là thay đổi kế hoạch truy vấn để sử dụng quét bảng/chỉ mục thay vì tìm kiếm. – steoleary