UNION ALL
を作る 2 つのステートメントのうち:
SELECT *
FROM mytable
WHERE myid = @col
UNION ALL
SELECT *
FROM mytable
WHERE @col IS NULL
または IF / ELSE
で分割するだけです ストアド プロシージャのブロック。
どちらの方法でも、オプティマイザーはクエリを個別に最適化し、@col
の値に応じてそのうちの 1 つを完全に無視できます。 .