Explain plan

1.      Definiciones

Explain plan:

Herramienta o función proporcionada por el SGBD (Sistema de Gestión de Bases de Datos) que hace visible un plan de ejecución.

Execution plan:

Una sentencia SQL analizada, optimizada, compilada y ejecutable que se almacena en la llamada caché SQL de la base de datos. Utilizando el plan de explicación, el flujo de ejecución SQL de este plan puede hacerse visible textualmente o gráficamente. El plan de ejecución muestra la secuencia de los pasos detallados que son necesarios para ejecutar una sentencia SQL.

2.       Contenido del plan de ejecución

Dentro de SAP puede encontrar el plan de explicación en dos transacciones importantes: ST05 y ST04.

Es importante comprender lo que puede ver en estos planes de ejecución. Para la misma declaración SQL, el contenido del plan de ejecución puede ser diferente en estas 2 transacciones dependiendo de la plataforma de la base de datos.

Tenemos que distinguir entre un “plan estimado” y el “plan actual”. La principal diferencia entre estos dos es que le dicen cómo se ejecutará (probablemente) una declaración, o cómo se ejecutó realmente una declaración.

“Plan de ejecución estimado”:

El plan de ejecución estimado le mostrará cómo se ejecutará (probablemente) una declaración. Esto significa que una declaración SQL o DML dada se analizará y optimizará teniendo en cuenta el entorno actual (parámetros, estadísticas, índices, configuraciones, etc.) y se mostrará este plan de ejecución recién construido.

“Plan de ejecución real”:

El plan de ejecución real le mostrará cómo se ejecutó realmente una declaración. Esto significa que para una declaración SQL o DML determinada, se mostrará el plan de ejecución que se utilizó para la última ejecución.

En muchos casos, los planes de ejecución estimados y reales son iguales, pero existen algunas razones que dependen de la base de datos por las que el plan estimado y el real pueden ser diferentes. Por lo tanto, esto debe discutirse con los planes de ejecución específicos de la base de datos.

3.       Obteniendo el plan de ejecución con ST05

Dado que ST04 depende de la base de datos, encontrará el plan de ejecución en distintos lugares.

Generalmente puede obtener la siguiente información en el plan de ejecución:

  • Pasos detallados que son necesarios para ejecutar una declaración SQL, como un escaneo de índice, un escaneo de tabla completa o el método de unión utilizado.
  • El orden de estos pasos que decide el optimizador.
  • Estimaciones de cardinalidad y costo de i/o y /o CPU para cada paso.
  • Información adicional sobre cómo se utilizan los predicados.

En este artículo describimos lo que hace la función “Explain Plan” y presentamos su resultado, el plan de ejecución. Distinguimos dos tipos de planes de ejecución, el plan de ejecución estimado y el plan de ejecución real y señalamos lo que se puede ver en ST04 y ST05 para las diferentes plataformas de base de datos. Además, hemos visto dónde podemos encontrar el plan de explicación en ST05. Esta información será crucial para el análisis y ajuste de declaraciones SQL.

4.       Desarrollo

Abriremos nuestro SAP GUI y navegaremos por la transacción ST04.

Esto nos llevará a una ventana donde tendremos información general del sistema, conexiones de bases de datos, configuración del sistema, el uso de los recursos del mismo, entre otras.

En la ventana que está a la izquierda, encontraremos unas opciones, nos desplazamos por Diagnostics 🡪 EXPLAIN y damos clic.

Se nos abrirá una ventana en la cual podremos ingresar el código de la consulta que realizaremos.

Para este caso realizaremos la siguiente consulta hacia una sola tabla sin predicados, pero la consulta SQL puede ser tan compleja como el requerimiento lo necesite.

SELECT * FROM sflight

Ejecutamos la consulta con el botón Explain

Obteniendo el siguiente Explain Plan, en el que nos muestra todas las columnas de la tabla SFLIGHT.

Ahora, ampliaremos la consulta para obtener más información agregando la tabla SAPLANE, obteniendo los datos de las columnas planetype y filtrando por la columna connid con una subconsulta de la tabla SPFLI cuando connid = ‘0017’ de la siguiente manera:

SELECT * FROM sflight AS a INNER JOIN saplane AS b

ON a.planetype = b.planetype

WHERE a.connid = ( SELECT connid FROM spfli WHERE connid = ‘0017’)

Ejecutamos la consulta obteniendo el siguiente Explain Plan, en donde además de mostrarnos las columnas de las tablas, nos muestra en qué orden realizará la consulta y en qué tabla.

En este artículo proporcionamos una explicación general del Explain Plan dirigido a todos los desarrolladores que quieran aprender más sobre las herramientas SQL en SAP y cómo optimizar las consultas.

Un comentario de “Explain plan

  1. Santiago dice:

    que bueno que compartan este tipo de artículos. en lo personal me ayudara a ampliar mis conocimientos en SAP OPEN SQL. Gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *