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.