Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment optimiser l'utilisation de la clause OR lorsqu'elle est utilisée avec des paramètres (SQL Server 2008)

SQL Server n'est pas très bon pour optimiser le OR prédicats.

Utilisez ceci :

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 examinera les valeurs des variables avant d'exécuter les requêtes et optimisera les requêtes redondantes.

Cela signifie qu'une seule requête sur quatre sera réellement exécutée.