Một số người sử dụng kỹ thuật này
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Mặc dù vậy, nó đảm bảo rằng bạn sẽ không bao giờ nhận được tìm kiếm chỉ mục trên cột itemid.
Một cách tiếp cận tốt hơn nếu bảng quá lớn là chia truy vấn thành 2 trường hợp riêng biệt
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Nếu số lượng kết hợp quá lớn, bạn có thể xem xét SQL động. Hãy chắc chắn rằng bạn hiểu SQL injection trước.
Tham khảo: Điều kiện tìm kiếm động trong T-SQL