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

¿TSQL devolverá resultados más rápidos que el procedimiento almacenado en SQL Server?

En sus consultas, agregue OPTION(OPTIMIZE FOR UNKNOWN) (como la última cláusula) para evitar la detección de parámetros. Para ver la sintaxis y la explicación, consulte la documentación en Sugerencias de consulta .

Lo que SQL Server hace la primera vez que ejecuta un procedimiento almacenado es optimizar los planes de ejecución para los parámetros que se le pasaron. Esto se hace en un proceso que se llama Parameter Sniffing .

En general, SQL Server almacena en caché los planes de ejecución para que SQL Server no tenga que volver a compilar cada vez para la misma consulta. La próxima vez que se ejecute el procedimiento, SQL Server reutilizará los planes de ejecución para las consultas que contiene... Sin embargo, los planes de ejecución pueden ser totalmente ineficientes si los llama con parámetros diferentes. .

La opción que le di le dirá al compilador de SQL que el plan de ejecución no debe optimizarse para específico parámetros, sino para cualquiera parámetro que se pasa al procedimiento almacenado.

Para citar la documentación:

En algunos casos, los procedimientos almacenados pueden beneficiarse de la detección de parámetros, en otros casos no. Para los Procedimientos almacenados que no se benefician de Paramater Sniffing, puede agregar la opción a cada consulta que use cualquiera de los parámetros del Procedimiento almacenado.