Certaines personnes utilisent cette technique
... WHERE @itemid IS NULL OR tbl.itemid = @itemid
Il garantit cependant que vous ne serez jamais un recherche d'index sur la colonne itemid .
Une meilleure approche si la table est tout grand 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 grande, vous pouvez envisager SQL dynamique. Assurez-vous de comprendre l'injection SQL en premier.
Ref: Dynamic Search Conditions in T-SQL
si vous voulez que les gens vous aident d'abord à comprendre votre problème. que voulez-vous dire par "ça ne marche pas"? Quelle est la requête complète? – Andrey
si ItemID est NULL alors il ne devrait pas chercher des lignes? ou devrait-il aller chercher le rownum entre Row_Start et Row_End? –