SQL Server
không tốt lắm trong việc tối ưu hóa OR
vị ngữ.
Sử dụng cái này:
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
sẽ xem xét các giá trị của các biến trước khi thực hiện các truy vấn và sẽ tối ưu hóa các truy vấn thừa.
Điều này có nghĩa là chỉ một truy vấn trong số bốn truy vấn sẽ được thực thi.