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

SQL Server 2008 - Consulta condicional

mejor fuente de condiciones de búsqueda dinámica:

Condiciones de búsqueda dinámica en T-SQL por Erland Sommarskog

hay muchas implicaciones sutiles sobre cómo hacer esto en cuanto a si se puede usar un índice o no. Si está en la versión correcta de SQL Server 2008, simplemente puede agregar OPTION (RECOMPILE) a la consulta y el valor de la variable local en tiempo de ejecución se utiliza para las optimizaciones.

Considere esto, OPTION (RECOMPILE) tomará este código (donde no se puede usar ningún índice con este lío de OR s):

WHERE
    (@search1 IS NULL or [email protected])
    AND (@search2 IS NULL or [email protected])
    AND (@search3 IS NULL or [email protected])

y optimizarlo en tiempo de ejecución para que sea (siempre que solo se haya pasado @Search2 con un valor):

WHERE
    [email protected]

y se puede usar un índice (si tiene uno definido en Column2)