Ver un plan de ejecución dentro de la base de datos Oracle involucra dos etapas:
explain plan for
guarda el plan de ejecución enPLAN_TABLE
.Formatear y mostrar el plan de ejecución.
Crear y guardar un plan de ejecución
Para crear un plan de ejecución, basta con anteponer a la sentencia SQL correspondiente 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 ejecute 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 que cuando se ejecute la sentencia.
Mostrar los planes de ejecución
El paquete DBMS_XPLAN
permite formatear y mostrar los planes de ejecución. El siguiente ejemplo muestra cómo se muestra 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_cursor(null, null,
'LAST ALLSTATS +COST'))
Una vez más, si la sentencia no funciona desde el primer intento, se debe pedir asistencia a su DBA.
La sentencia mostrará el plan de ejecución como se ha visto en el libro:
---------------------------------------------------------------
| Operation | Name | E-Rows | Cost | A-Rows | A-Time |.
---------------------------------------------------------------
| SELECT STATEMENT | | | 2 | 1 | 00.01 |.
| TABLE ACCESS FULL| DUAL | 1 | 2 | 1 | 00.01 |.
---------------------------------------------------------------
Algunas de las columnas expuestas en el plan de ejecución se han eliminados en el libro para lograr un mejor ajuste en la página.