Certaines personnes utilisent cette technique
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Cela garantit cependant que vous n'obtiendrez jamais de recherche d'index sur la colonne itemid.
Une meilleure approche si la table est trop grande est de diviser la requête en 2 cas distincts
IF(@itemid IS NULL)
SELECT foo FROM bar
ELSE
SELECT foo FROM bar WHERE itemid = @itemid
Si le nombre de combinaisons est trop important, vous pouvez envisager le SQL dynamique. Assurez-vous d'abord de comprendre l'injection SQL.
Réf :Conditions de recherche dynamiques dans T-SQL