Alcune persone usano questa tecnica
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Garantisce tuttavia che non otterrai mai una ricerca dell'indice sulla colonna itemid.
Un approccio migliore se la tabella è grande è dividere la query in 2 casi separati
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Se il numero di combinazioni è troppo grande, puoi prendere in considerazione l'SQL dinamico. Assicurati di aver prima compreso SQL injection.
Rif:Condizioni di ricerca dinamica in T-SQL