El comando EXPLAIN PLAN

Ahora puedes ver nuestros vídeos cortos acerca del lenguaje SQL

Para ejecutar una sentencia SQL Oracle necesita llevar adelante varios pasos. Cada uno de estos pasos recupera fisicamente de la base filas de datos o los prepara de alguna manera para entregarlos al usuario que ejecuto la sentencia. La combinacion de pasos que Oracle lleva adelante para ejecutar una sentencia constituye el plan de ejecucion.

¿Como visualizamos dicho plan de ejecucion? La sentencia EXPLAIN PLAN permite examinar el plan de ejecucion determinado por el optimizador. Cuando se ejecuta EXPLAIN PLAN el optimizador selecciona un plan de ejecucion y lo inserta en una tabla de la base de datos. Para visualizar el plan de ejecucion simplemente hay que ejecutar el comando EXPLAIN PLAN y luego hacer un query sobre la tabla de salida.

Los pasos basicos para utilizar la sentencia EXPLAIN PLAN son:

  1. Crear la tabla de salida denominada PLAN_TABLE con el script UTLXPLAN.SQL
  2. Incluir la clausula EXPLAIN PLAN antes de la sentencia SQL cuyo plan se pretende visualizar.
  3. Una vez ejecutada la sentencia con la clausula EXPLAIN PLAN, visualizar la tabla PLAN_TABLE con alguno de los scripts o packages provistos por Oracle para tal fin. Existen otras herramientas para visualizar planes de ejecucion, Productos como TOAD o SqlDeveloper ofrecen dicha posibilidad facilmente a traves de opciones de menu.

En general, la creacion de la PLAN_TABLE es realizada por el DBA. Para crearla, el administrador de base de datos suele ejecutar en forma manual el script utlxplan.sql. El nombre y ubicacion exacto de dicho script depende del sistema operativo. En Unix esta ubicado en el directorio $ORACLE_HOME/rdbms/admin.

Por ejemplo, estando conectado desde el mismo servidor de base de datos,

CONNECT usuario/password 
@$ORACLE_HOME/rdbms/admin/utlxplan.sql
Table created.

Una vez creada la PLAN_TABLE, es posible obtener un plan de ejecucion anteponiendo la clausula EXPLAIN PLAN FOR inmediatamente antes de la sentencia. Por ejemplo:

EXPLAIN PLAN FOR
  SELECT empleado_apellido FROM empleados;

La ejecucion de esta sentencia inserta el plan de ejecucion en la tabla PLAN_TABLE.

Por ultimo, se puede consultar la PLAN_TABLE utilizando alguno de los siguientes scripts o packages provistos por Oracle para obtener el plan de ejecucion mas reciente:

  • Script UTLXPLS.SQL
  • Script UTLXPLP.SQL
  • Funcion DBMS_XPLAN.DISPLAY
Anuncios

1 comentario

  1. Lo mejorcito que he encontrado para entender el tema.

    Gracias


Comments RSS TrackBack Identifier URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s