sql >> Database >  >> RDS >> Sqlserver

Het gebruik van de OR-clausule optimaliseren bij gebruik met parameters (SQL Server 2008)

SQL Server is niet erg goed in het optimaliseren van de OR predikaten.

Gebruik dit:

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 zal naar de waarden van de variabelen kijken voordat de query's worden uitgevoerd en de overtollige query's optimaliseren.

Dit betekent dat slechts één query van vier daadwerkelijk wordt uitgevoerd.



  1. Kunt u Microsoft Entity Framework gebruiken met Oracle?

  2. PostgreSQL:welk gegevenstype moet worden gebruikt voor valuta?

  3. TUPLES gebruiken om meer dan 1000 vermeldingen in de SQL IN-clausule te plaatsen

  4. Een mysql-resultatenset doorlopen