Tôi có một truy vấn sql chạy siêu nhanh, khoảng một giây, khi không sử dụng các biến, như:Tại sao SQL Server chạy chậm khi sử dụng các biến?
WHERE id BETWEEN 5461094 and 5461097
Nhưng khi tôi có:
declare @firstId int
declare @lastId int
set @firstId = 5461094
set @lastId = 5461097
...
WHERE id BETWEEN @firstId and @lastId
... truy vấn chạy rất chậm , chỉ hoàn thành sau vài phút. Tại sao nó lại xảy ra? Tôi cần sử dụng các biến. Tôi có thể thực hiện bất kỳ cải tiến nào để tránh các vấn đề về hiệu năng này không?
Trong Oracle, nếu phạm vi luôn nhỏ, mọi thứ sẽ ổn. Nó sẽ chọn kế hoạch dựa trên các biến đầu tiên. Nếu nó luôn nhỏ, bạn luôn ổn. Đó là trường hợp xoay giữa các thái cực. Tôi nghĩ rằng SS thêm một cái gì đó giống như nhìn trộm gần đây ... có thể '05 hoặc '08. –