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

Existe algum problema de desempenho ao usar ISNULL() no SQL Server?


ISNULL() na cláusula select tem uma influência insignificante no desempenho. Na cláusula where, por outro lado, pode ter um impacto muito grande no desempenho, pois impede o otimizador de usar um índice nessa coluna.
where isnull(col1, 0) = 0 -- unable to use index, because every 
                          -- row has to be evaluated

where col1 = isnull(@myVar, 0) -- index will be used, since isnull(@myVar, 0) 
                               -- returns the same static value for every row and 
                               -- not every row has to be evaluated by the function.

Portanto, ao usar isnull() em uma cláusula where, avalie se isso impede que o otimizador de consulta use um índice. Nesse caso, considere criar uma coluna computada com o resultado if isnull(col1, 0) e indexe a coluna computada e use-a em sua cláusula where.