nguồn tốt nhất cho các điều kiện tìm kiếm động:
Điều kiện tìm kiếm động trong T-SQL của Erland Sommarskog
có rất nhiều hàm ý tinh tế về cách bạn thực hiện việc này như liệu một chỉ mục có thể được sử dụng hay không. Nếu bạn đang sử dụng phiên bản SQL Server 2008 thích hợp, bạn chỉ có thể thêm OPTION (RECOMPILE)
cho truy vấn và giá trị của biến cục bộ tại thời điểm chạy được sử dụng để tối ưu hóa.
Hãy xem xét điều này, OPTION (RECOMPILE)
sẽ lấy mã này (nơi không thể sử dụng chỉ mục nào với mớ OR
này s):
WHERE
(@search1 IS NULL or [email protected])
AND (@search2 IS NULL or [email protected])
AND (@search3 IS NULL or [email protected])
và tối ưu hóa nó tại thời điểm chạy (miễn là chỉ @ Search2 được chuyển vào với một giá trị):
WHERE
[email protected]
và một chỉ mục có thể được sử dụng (nếu bạn có một chỉ mục được xác định trên Cột 2)