Recorrer Analyze Actual Execution Plan

Analyze Actual Execution Plan revisa un plan real y señala patrones que SSMS reconoce en la ejecución observada. La herramienta ayuda a localizar un punto que merece investigación; no confirma por sí sola la causa ni decide qué cambio conviene aplicar.

Esta consulta reproduce el caso utilizado en las capturas:

DECLARE @Desde DATE = '2025-12-30';

SELECT
    p.Estado,
    COUNT_BIG(*) AS Pedidos,
    SUM(p.Total) AS ImporteTotal,
    AVG(p.Total) AS ImportePromedio
FROM dbo.PedidoLaboratorio AS p
WHERE p.FechaPedido >= @Desde
GROUP BY p.Estado
ORDER BY ImporteTotal DESC;

El análisis necesita un plan real

Activa Include Actual Execution Plan con Ctrl+M, ejecuta la consulta y abre Execution plan. Después haz clic derecho sobre el lienzo y elige Analyze Actual Execution Plan.

Un plan real conserva estimaciones y agrega mediciones de la ejecución, como las filas observadas. Esa comparación permite que SSMS busque escenarios donde lo previsto y lo ocurrido se separaron. El análisis no aparece como sustituto del plan: abre el panel Showplan Analysis y mantiene el plan como fuente de la evidencia.

La consulta reúne los pedidos recientes por estado, cuenta sus filas, calcula el importe total y el promedio, y ordena los grupos por importe. El plan combina Index Seek, Hash Match (Aggregate), Compute Scalar y Sort. En el acceso inicial, SQL Server estimó 30000 filas y observó 136. Esta es la misma diferencia estudiada al comparar filas estimadas y reales; ahora veremos cómo la presenta la herramienta dentro de un plan con más operaciones.

Multi Statement elige la instrucción que se analizará

Selección de una consulta en Multi Statement de Showplan Analysis

  1. 1
    Multi Statement

    Reúne las instrucciones disponibles en el plan y permite elegir una sola para el análisis.

  2. 2
    Consulta seleccionada

    El botón de opción identifica la instrucción activa. En un lote con varias consultas debemos confirmar el texto antes de interpretar los escenarios.

Un lote es el conjunto de instrucciones enviado conjuntamente a SQL Server. Aunque este plan contiene una sola consulta, SSMS conserva el paso de selección porque un plan puede reunir varias.

Cambiar la selección no ejecuta otra vez la consulta. Cambia qué instrucción del documento abierto examina el panel.

Scenarios agrupa los patrones encontrados

Después de elegir la instrucción, la pestaña Scenarios muestra las categorías de posibles problemas que SSMS reconoció para ella.

Escenario de estimación cardinal incorrecta encontrado por SSMS

  1. 1
    Categoría encontrada

    Inaccurate Cardinality Estimation indica que la estimación y la cantidad observada se separaron en un operador.

  2. 2
    Hallazgo

    La fila relaciona la diferencia con el Index Seek y muestra `136` filas reales frente a `30000` estimadas.

  3. 3
    Valor disponible al compilar

    SSMS señala que el predicado depende de @Desde y que el valor conocido durante la compilación pudo ser desconocido o distinto del utilizado al ejecutar.

  4. 4
    Estadísticas

    La segunda posibilidad pide comprobar si las estadísticas de la tabla son diferentes o están desactualizadas.

La columna Difference % muestra 21958. Ese porcentaje expresa la separación calculada por la herramienta; no es el costo del operador, una pérdida de rendimiento ni un umbral universal de gravedad.

El nodo identifica dónde observó SSMS la diferencia. No significa que el Index Seek sea defectuoso. El operador sigue siendo el punto donde se comparan las dos cantidades; la explicación puede depender del predicado, los parámetros, las estadísticas o la distribución de los datos.

Finding Details propone líneas de investigación

Una posible explicación indica dónde buscar evidencia adicional. No afirma que ambas condiciones existan ni que alguna sea la causa confirmada. En esta prueba, la presencia de una variable local hace pertinente revisar qué información tuvo el optimizador al estimar; la mención de estadísticas sigue siendo una hipótesis hasta comprobar sus fechas, modificaciones y distribución.

Los enlaces here abren documentación general del escenario. No analizan el historial de esta base ni validan una corrección específica para la consulta.

Conservar separadas la señal y la decisión

La lectura puede registrarse en tres partes:

  • Observación: el Index Seek estimó 30000 filas y produjo 136 en esta ejecución.
  • Hipótesis sugeridas: el valor disponible durante la compilación o las estadísticas podrían contribuir a la diferencia.
  • Comprobación pendiente: medir el trabajo realizado y revisar cada hipótesis antes de modificar la consulta, las estadísticas o los índices.

Actualizar estadísticas, agregar OPTION (RECOMPILE) o cambiar el código solamente porque aparecen mencionados en una explicación convertiría una pista en una corrección automática. Cada alternativa tiene efectos y necesita una prueba propia.

Lo que la herramienta no garantiza

Analyze Actual Execution Plan trabaja con los escenarios que reconoce la versión instalada de SSMS. Que el panel no muestre un escenario no demuestra que el plan esté libre de problemas. Que muestre uno tampoco establece su impacto sobre CPU, lecturas, duración o concurrencia.

La herramienta analiza el documento abierto. No compara por sí sola ejecuciones históricas, parámetros representativos ni condiciones distintas de carga. Sus textos y categorías también pueden variar entre versiones de SSMS.

Qué podemos concluir

Podemos seleccionar la instrucción correcta, localizar el operador asociado al hallazgo y convertir las explicaciones de SSMS en preguntas concretas. Todavía no podemos elegir una corrección: primero necesitamos medir el trabajo y comprobar cuál hipótesis describe esta ejecución.

Siguiente comprobación razonable

La siguiente entrada utiliza SET STATISTICS IO para medir páginas leídas y conteos de exploración. Esa evidencia permitirá relacionar el escenario detectado con el trabajo que SQL Server realizó para resolver la consulta.

Relacionado con

Índice del recorrido

Planes de ejecución

30 artículos de Planes de ejecución
  1. 01Para qué sirve un plan de ejecución
  2. 02Plan estimado, plan real y estadísticas en vivo
  3. 03Cómo se organiza el árbol de un plan de ejecución
  4. 04Flechas, propiedades y número de ejecuciones
  5. 05Mapa de operadores: qué papel cumple cada nodo
  6. 06Filas estimadas y filas reales
  7. 07Index Seek, Index Scan y Table Scan
  8. 08Key Lookup y trabajo repetido
  9. 09Filter, Compute Scalar y Top
  10. 10Nested Loops, Hash Match y Merge Join
  11. 11Sort, Segment y Sequence Project
  12. 12Stream Aggregate y Hash Match (Aggregate)
  13. 13Spool: materialización y reutilización
  14. 14Parallelism: distribuir, repartir y reunir filas
  15. 15Advertencias del plan que requieren investigación
  16. 16Acciones disponibles en el plan gráfico de SSMS
  17. 17Cómo se organiza el XML Showplan
  18. 18Recorrer Analyze Actual Execution Plan
  19. 19Lecturas con SET STATISTICS IO
  20. 20CPU y duración con SET STATISTICS TIME
  21. 21Construir una línea base repetible
  22. 22Guardar y comparar dos planes
  23. 23Historial y regresiones con Query Store
  24. 24Convertir un escenario de Analyze Actual Execution Plan en una hipótesis
  25. 25Leer una sugerencia Missing Index en el plan
  26. 26Entender el CREATE INDEX generado por SSMS
  27. 27Decidir, crear y comprobar un índice
  28. 28De una consulta lenta a una hipótesis comprobable
  29. 29Evaluar un cambio sin optimizar solo una ejecución
  30. 30Análisis guiado de una consulta empresarial reproducible