sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan optimerer du brugen af ​​OR-klausulen, når den bruges med parametre (SQL Server 2008)

SQL Server er ikke særlig god til at optimere OR prædikater.

Brug denne:

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 vil se på værdierne af variablerne før udførelse af forespørgslerne og vil optimere de overflødige forespørgsler ud.

Det betyder, at kun én forespørgsel af fire faktisk vil blive udført.



  1. 5 gode ressourcer til at hjælpe dig med at rocke din databaseovervågningsrolle

  2. Sådan fungerer ELT() i MariaDB

  3. VÆLG eller INDSÆT en række i én kommando

  4. Sådan tilføjes en primær nøgle til en eksisterende tabel i SQL Server (T-SQL-eksempler)