Hace un tiempo tuve una consulta que corrí bastante para uno de mis usuarios. Aún se estaba desarrollando y modificando, pero finalmente se estabilizó y ejecutó con bastante rapidez, por lo que creamos un procedimiento almacenado a partir de él.Sniffing de parámetros (o Spoofing) en SQL Server
Hasta ahora, muy normal.
El procedimiento almacenado, sin embargo, fue lento. No hay diferencia material entre la consulta y el proceso, pero el cambio de velocidad fue masivo.
[fondo, nos estamos quedando SQL Server 2005.]
Un DBA agradable local (que ya no trabaja aquí) tomó una mirada en el procedimiento almacenado y dijo "parámetro de suplantación de identidad!" (Editar: aunque parece que es, posiblemente, también conocido como 'descubrimiento de parámetros', lo que podría explicar la escasez de Google golpea cuando traté de buscar a cabo.)
Se resumieron algunos de los procedimientos almacenados a una en segundo lugar, envolví la llamada a este nuevo proceso interno en el proceso externo preexistente, llamado el externo y, listo, fue tan rápido como la consulta original.
Entonces, ¿qué da? ¿Alguien puede explicar la suplantación de parámetros?
crédito de bonificación sobre
- destacando cómo evitarlo
- sugiriendo cómo reconocer posible causa
- discutir estrategias alternativas, por ejemplo, estadísticas, índices, claves, para mitigar la situación
No es solo una posibilidad, es una certeza, no existe la parametrización de parámetros. Es parámetro oliendo. – ErikE