Някои хора използват тази техника
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Това обаче гарантира, че никога няма да получите търсене на индекс в колоната itemid.
По-добър подход, ако таблицата изобщо е голяма, е да разделите заявката на 2 отделни случая
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Ако броят на комбинациите е твърде голям, можете да помислите за динамичен SQL. Първо се уверете, че разбирате SQL инжекцията.
Ref:Условия за динамично търсене в T-SQL