Někteří lidé tuto techniku používají
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Zaručuje však, že nikdy nedostanete hledání indexu ve sloupci itemid.
Lepší přístup, pokud je tabulka vůbec velká, je rozdělit dotaz na 2 samostatné případy
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Pokud je počet kombinací příliš velký, můžete zvážit dynamické SQL. Nejprve se ujistěte, že rozumíte SQL injection.
Ref:Podmínky dynamického vyhledávání v T-SQL