Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Cláusula WHERE-CASE Desempenho de Subconsulta


Acho que a solução pode, em teoria, ajudá-lo a aumentar o desempenho, mas também depende do que a função escalar realmente faz. Acho que nesse caso (meu palpite é formatar a data para o último dia do trimestre) seria realmente insignificante.

Você pode querer ler esta página com soluções alternativas sugeridas:

http://connect.microsoft.com/SQLServer/feedback/details/273443/the-scalar-expression-function-would-speed-performance-while-keeping-the-benefits-of- funções#

E em Soluções alternativas, há um comentário que

Portanto, parece que sim, isso pode aumentar o desempenho.

Sua solução está correta, mas eu recomendaria considerar uma melhoria do SQL para usar ELSE, parece mais limpo para mim:
AND ReportTypeID = CASE WHEN (@X = 1) THEN  1 
                    ELSE 4
                    END;