de Martin LE TARNEC.

Obtener un plan de ejecución


Ver un plan de ejecución dentro de la base de datos Oracle involucra dos etapas:

  1. explain plan for guarda el plan de ejecución en PLAN_TABLE.

  2. Formatear y desplegar el plan de ejecución.

Crear y guardar un plan de ejecución

Para crear un plan de ejecución, solo se debe prefijar la sentencia SQL correspondiente con el comando explain plan for:

EXPLAIN PLAN FOR select * from dual

Se puede ejecutar el comando explain plan for en cualquier ambiente de desarrollo o con SQL*Plus. Sin embargo, no muestra el plan de ejecución sino que lo guarda en la tabla denominada PLAN_TABLE. Desde la versión 10g, esta tabla está disponible automáticamente como una tabla temporal global. Con las versiones anteriores, se tenía que crear en cada esquema, a medida que se necesitaba. Solicita a tu administrador de base de datos que la cree o provee el comando create table desde la instalación de la base de datos Oracle:

$ORACLE_HOME/rdbms/admin/utlxplan.sql

Se puede ejecutar esta sentencia en cualquier esquema donde se desea crear la tabla PLAN_TABLE.

Aviso

El comando explain plan for no crea necesariamente el mismo plan de ejecución como si fuera cuando se ejecutó la sentencia.

Mostrar los planes de ejecución

Introducido a partir de la versión 9iR2, el paquete DBMS_XPLAN permite formatear y desplegar los planes de ejecución desde la tabla PLAN_TABLE. El siguiente ejemplo muestra cómo se despliega el último plan de ejecución que se ejecutó en la sesión actual de la base de datos:

select * from table(dbms_xplan.display)

Una vez más, si la sentencia no funciona desde el primer intento, se debe pedir asistencia a su DBA.

La sentencia desplegará el plan de ejecución como se ha visto en el libro:

--------------------------------------------------------------
| Id | Operation         | Name | Rows | Bytes | Cost (%CPU)|.
--------------------------------------------------------------
|  0 | SELECT STATEMENT  |      |    1 |     2 |     2   (0)|.
|  1 |  TABLE ACCESS FULL| DUAL |    1 |     2 |     2   (0)|.
--------------------------------------------------------------

Algunas de las columnas vistas en el plan de ejecución se han eliminados en el libro para lograr un mejor ajuste en la página.

Acerca del autor

Foto de Markus Winand

Markus Winand enseña eficientemente SQL, en casa y online. Minimiza el tiempo de desarrollo utilizando moderno SQL y optimiza el tiempo de ejecución con indexación inteligente. Para ello también ha publicado el libro SQL Performance Explained.

“Use The Index, Luke” de Markus Winand se halla bajo licencia Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Aspectos legales | Contacto | SIN GARANTÍA | Marcas | Privacy | CC-BY-NC-ND 3.0 licencia