Para qué sirve un plan de ejecución

Escribimos una consulta para indicar qué resultado necesitamos. SQL Server todavía debe decidir cómo localizar, combinar y procesar los datos para producirlo. El plan de ejecución representa esa estrategia.

Recorrido desde la consulta hasta las mediciones de una ejecución

La consulta describe el resultado

SQL es un lenguaje declarativo: expresamos el resultado que queremos, no una secuencia completa de pasos físicos. Una instrucción puede pedir clientes con pedidos confirmados, pero no necesita indicar qué índice abrir primero, cómo recorrerlo o qué método utilizar para relacionar las tablas.

Declarativo significa que describimos el objetivo. El motor conserva la responsabilidad de elegir una estrategia para alcanzarlo.

Dos consultas pueden devolver las mismas filas mediante estrategias diferentes. Una misma consulta también puede recibir otro plan cuando cambian los parámetros, los datos, los índices, las estadísticas o la versión del motor.

El optimizador elige una estrategia

Antes de ejecutar una consulta, SQL Server utiliza el optimizador para comparar alternativas. Este componente considera las estructuras disponibles y estima el trabajo de diferentes caminos.

Entre esas estructuras pueden existir tablas, índices y estadísticas:

  • una tabla conserva las filas y columnas;
  • un índice organiza valores para facilitar determinados accesos;
  • las estadísticas describen la distribución aproximada de los datos y ayudan a estimar cuántas filas podrían cumplir una condición.

El optimizador no intenta probar todas las estrategias posibles. Busca una alternativa con un costo estimado razonable dentro del tiempo disponible para compilar.

El plan representa la estrategia elegida

Plan de ejecución real mostrado por SQL Server Management Studio

El plan de ejecución es una representación de las operaciones que SQL Server eligió conectar para producir el resultado. Cada operación recibe, obtiene o entrega filas.

Estas operaciones se denominan operadores. Un operador puede acceder a una tabla o índice, filtrar filas, combinar conjuntos, ordenar información o calcular un valor. El plan muestra cómo se relacionan, pero todavía necesitamos aprender a leer su estructura antes de evaluar si una decisión merece investigación.

Resultado, estrategia y medición

Conviene mantener separados tres elementos:

  • el resultado contiene las filas producidas por la consulta;
  • el plan describe la estrategia elegida para obtenerlas;
  • las mediciones registran trabajo observado, como lecturas, CPU o duración.

Un resultado correcto no demuestra que la estrategia sea adecuada para todos los volúmenes o parámetros. Un plan tampoco demuestra por sí solo cuánto tardó una ejecución. Para evaluar rendimiento debemos relacionar la estrategia con mediciones obtenidas bajo condiciones conocidas.

Para qué conviene consultarlo

El plan ayuda a:

  • reconstruir cómo SQL Server espera acceder y procesar los datos;
  • reconocer tablas, índices y operaciones participantes;
  • localizar estimaciones o decisiones que necesitan comprobarse;
  • comparar estrategias antes y después de un cambio controlado;
  • formular una pregunta más precisa sobre el trabajo de la consulta.

Qué todavía no demuestra

Un plan aislado no demuestra que una operación sea incorrecta, que deba crearse un índice ni que la alternativa con menor costo estimado vaya a funcionar mejor en todas las condiciones.

Tampoco autoriza a modificar una consulta empresarial sin revisar parámetros, frecuencia, volumen, concurrencia y efectos sobre otras operaciones. El plan aporta evidencia para investigar; no reemplaza la medición ni el contexto.

Siguiente comprobación razonable

La siguiente entrada distingue plan estimado, plan real y estadísticas en vivo. Después estudiaremos la anatomía del diagrama y solo entonces trabajaremos con ejemplos controlados.

Í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