sql >> Base de Datos >  >> RDS >> Sqlserver

¿Hay algún problema de rendimiento al usar ISNULL() en SQL Server?

ISNULL() en la cláusula select tiene una influencia insignificante en el rendimiento. En la cláusula where, por otro lado, puede tener un gran impacto en el rendimiento, ya que impide que el optimizador use un índice en esa columna.

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.

Entonces, cuando use isnull() en una cláusula where, evalúe si evita que el optimizador de consultas use un índice. Si es así, considere crear una columna calculada con el resultado si es nulo (col1, 0) e indexe la columna calculada y utilícela en su cláusula where.