sql >> Base de Datos >  >> RDS >> Sqlserver

Comprobación condicional en la cláusula Dónde

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