Tenho um SP com um parâmetro que tem NULL como valor padrão e então quero fazer uma consulta assim:
SELECT ...
FROM ...
WHERE a.Blah = @Blah AND (a.VersionId = @VersionId OR (@VersionId IS NULL AND a.VersionId IS NULL));
O WHERE
acima verifica um valor não NULL e um valor NULL para @VersionId
.
Seria melhor em termos de desempenho usar uma IF
instrução e duplicar a consulta em uma que procura não NULL e outra para NULL assim? :
IF @VersionId IS NULL BEGIN
SELECT ...
FROM ...
WHERE a.Blah = @Blah AND a.VersionId IS NULL;
ELSE BEGIN
SELECT ...
FROM ...
WHERE a.Blah = @Blah AND a.VersionId = @VersionId;
END
Ou o otimizador de consulta torna essencialmente o mesmo?
ATUALIZAR:
(Nota: estou usando o SQL Server)
(E até onde eu sei, usar a.VersionId = @VersionId
para ambos os casos não vai funcionar, vai?)