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

sp_executesql es lento con los parámetros

Agregue OPCIÓN (RECOMPILE) al final

... AND SensorValue != -32767 OPTION (RECOMPILE) 

Sospecho que está experimentando un "olfateo de parámetros"

Si ese es el caso, podemos dejarlo con la OPCIÓN o considerar alternativas

Actualización 1

El siguiente artículo le presentará el "olfateo de parámetros" http://pratchev.blogspot.be/2007/08/parameter-sniffing.html

Le aconsejo que conozca los entresijos porque lo hará mucho mejor en la comprensión de las partes internas del servidor sql (que pueden morder).

Si lo entiende, sabrá que la compensación con la opción de recompilar puede habrá una disminución del rendimiento si la declaración se ejecuta muy a menudo.

Yo personalmente agrego la opción de recompilar después Sé que la causa raíz es el rastreo de parámetros y lo dejo a menos que haya un problema de rendimiento. La reescritura de una declaración para evitar la detección incorrecta de parámetros conduce a la pérdida de la intención y esto reduce la capacidad de mantenimiento. Pero hay casos en los que la reescritura está justificada (usa buenos comentarios cuando lo hagas).

Actualización 2

La mejor lectura que tuve sobre el tema fue en el capítulo 32 llamado "Olfateo de parámetros:tu mejor amigo... excepto cuando no es por" de GRANT FRITCHEY

Es recomendable.

Inmersiones profundas de MVP de SQL Server, Volumen 2