He capturado un plan de consulta real para una consulta específica.
Después de esto, he cambiado algunas cosas (incluida la actualización de las estadísticas) y volví a ejecutar esa consulta específica. Ahora el plan de consulta real es diferente (lo cual tiene sentido).
La consulta ahora se ejecuta mucho más rápido. Tengo curiosidad por saber si el nuevo plan de ejecución tiene algo que ver con esto, porque otros cambios (cambios en la configuración de E / S, configuración de VM, reinicio de instancia de SQL, etc.) también pueden estar causando una mejora en el rendimiento. Para probar esto, me gustaría ejecutar la consulta una vez más e intentar forzar a SQL Server a usar el plan de ejecución anterior.
Pregunta : ¿hay alguna manera de volver a ejecutar una consulta con un plan de ejecución proporcionado por el usuario, o incluso ejecutar una consulta directamente desde dicho plan?
Esto es lo que he intentado resolver:
- He buscado en los libros que tenemos disponibles en la oficina ( Professional SQL Server 2012 Internals and Solución de problemas , Consulta de Microsoft SQL Server 2012 );
- Búsquedas en Google, por ejemplo, "ejecutar consulta basada en un plan de consulta específico"
- DBA.SE busca, por ejemplo, "ejecutar plan de consulta" y "volver a ejecutar plan de ejecución"
- Y finalmente, una que ha respondido mis preguntas muchas veces antes: marque cuidadosamente "Preguntas que ya pueden tener su respuesta" antes de presionar "Publique su pregunta" :-)
En resumen: ¿es esto posible? ¿Si es así, cómo?
Respuestas:
Si.
Necesitas la
USE PLAN
pista.En el que se suministra
XML
desde el primer plan.Si bien no garantiza que el plan sea exactamente el mismo (por ejemplo, los operadores escalares de cómputo pueden moverse, por ejemplo), es probable que esté bastante cerca.
fuente