Sommige mensen gebruiken deze techniek
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Het garandeert echter dat u nooit een indexzoekopdracht krijgt in de itemid-kolom.
Een betere benadering als de tabel al groot is, is om de query op te splitsen in 2 afzonderlijke gevallen
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Als het aantal combinaties te groot is, kun je dynamische SQL overwegen. Zorg ervoor dat u eerst SQL-injectie begrijpt.
Ref:Dynamische zoekvoorwaarden in T-SQL