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.