SQL Server
OR
の最適化はあまり得意ではありません 述語。
これを使用してください:
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
クエリを実行する前に変数の値を調べ、冗長なクエリを最適化します。
これは、4つのクエリのうち1つだけが実際に実行されることを意味します。