Tôi đang sử dụng SQL Server 2008 R2 và tôi có truy vấn giả (SP) này:
select ...
from ...
WHERE @LinkMode IS NULL
AND (myColumn IN (...very long-running query...))
...
...
Vấn đề là truy vấn mất nhiều thời gian để thực thi - ngay cả khi tôi thực thi SP với @LinkMode=2
.
Như bạn đã nhận thấy, truy vấn chạy dài chỉ nên được thực hiện nếu @LinkMode là null, đây không phải là trường hợp ở đây. Trong trường hợp của tôi @LinkMode = 2!
Tuy nhiên, nếu tôi thay đổi nó thành:
select ...
from ...
WHERE 1=2
AND (myColumn IN (...very long time exeted query...))
...
...
SP không chạy nhanh.
Tôi đã nghe nói rằng đôi khi trình tối ưu hóa có thể tối ưu hóa thứ tự của các tiêu chí.
Vì vậy tôi hỏi :
Ngay cả khi trình tối ưu hóa chọn một tuyến đường khác, điều gì có thể nhanh hơn việc kiểm tra nếu
=null
? Ý tôi là, tôi nghĩ rằng việc kiểm tra đóif a==null
là nhiều nhanh hơn chạy truy vấn dài khác ...Làm cách nào tôi có thể buộc SQL Server chạy truy vấn như tôi đã viết (cùng thứ tự)?