Algunas personas usan esta técnica
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Sin embargo, garantiza que nunca obtendrá una búsqueda de índice en la columna itemid.
Un mejor enfoque si la tabla es grande es dividir la consulta en 2 casos separados
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Si el número de combinaciones es demasiado grande, puede considerar SQL dinámico. Asegúrese de comprender primero la inyección de SQL.
Ref:Condiciones de búsqueda dinámica en T-SQL