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

Alternativa al uso de variables locales en una cláusula where

Uso de variables locales en DONDE el filtro provoca la EXPLORACIÓN DE LA TABLA COMPLETA. Porque SS no conoce los valores de las variables locales en tiempo de compilación. Por lo tanto, crea un plan de ejecución para la escala más grande que puede estar disponible para la columna.

Para evitar el problema de rendimiento, SS debe conocer los valores de las variables en tiempo de compilación. Definir un SP y pasar estas variables locales como parámetro es una de las soluciones del problema. Otra solución es usar sp_executesql y pasando esas variables locales como un parámetro de nuevo...

O puede agregar OPCIÓN (RECOMPILAR) al final de su declaración sql para compilar sus variables locales. Esto resolverá el problema de rendimiento.