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

Cómo optimizar el uso de la cláusula OR cuando se usa con parámetros (SQL Server 2008)

SQL Server no es muy bueno para optimizar el OR predicados.

Usa esto:

SELECT  key3
FROM    or_table
WHERE   @key1 = 0
        AND @key2 = 0
UNION ALL
SELECT  key3
FROM    or_table
WHERE   @key1 = 0
        AND @key2 <> 0
        AND key2 = @key2
UNION ALL
SELECT  key3
FROM    or_table
WHERE   @key2 = 0
        AND @key1 <> 0
        AND key1 = @key1
UNION ALL
SELECT  key3
FROM    or_table
WHERE   @key1 <> 0
        AND @key2 <> 0
        AND key1 = @key1
        AND key2 = @key2

SQL Server buscará los valores de las variables antes de ejecutar las consultas y optimizará las consultas redundantes.

Esto significa que solo se ejecutará una consulta de cuatro.