Que es el plan de ejecucion?

Mujer de rojo y verde - Fernand Leger

Mujer de rojo y verde - Fernand Leger

Una sentencia SQL submitida por un usuario se puede ejecutar de varias maneras diferentes. Por ejemplo, una sentencia sencilla podria resolverse recorriendo una tabla completa o accediendo por un indice. El optimizador de sentencias, que es parte del motor de base de datos Oracle, es quien determina la forma mas eficiente para ejecutar una sentencia SQL. Para determinar la forma mas eficiente, el optimizador debe considerar diversos factores relacionados con los objetos referenciados y las condiciones especificadas en el query. La eleccion de la forma en que se resolvera una sentencia constituye un paso muy importante en el procesamiento de una sentencia SQL dado que tiene un efecto muy importante en el tiempo de ejecucion.

La forma en que Oracle resolvera la sentencia constituye el plan de ejecucion. Podriamos decir que el optimizador recibe como input una sentencia SQL y luego de determinar la forma mas eficiente para ejecutarlo devolvera como output un plan de ejecucion. Dicho plan describe el metodo optimo para la resolucion de la sentencia.

El plan de ejecucion es una combinacion de pasos que llevara adelante Oracle para ejecutar una sentencia SQL.

Para determinar el plan de ejecucion de una sentencia SQL, el optimizador debe considerar varios factores. En primer lugar debe evaluar todas las expresiones y condiciones. En el caso de queries complejos que involucran vistas o subqueries correlacionados, el optimizador puede llegar a hacer una transformacion de la sentencia original. Tambien debe elegir los metodos de acceso, es decir que para cada tabla presente en la sentencia debe determinar como acceder para obtener los datos del modo mas eficiente. Por ultimo, el optimizador debe seleccionar el orden en que hara el join de las tablas. Si por ejemplo el query tiene tres tablas, el optimizador debe seleccionar las dos que joineara primero para luego hacer un nuevo join de la tercer tabla con el resultado del join anterior.

Como se puede apreciar, la seleccion del plan de ejecucion no es una tarea sencilla. Es una actividad que demanda recursos y tiempo. Como explicamos en el post parseo, la determinacion del plan de ejecucion se realiza en la fase de parsing y es la parte mas costosa de dicha etapa; en algunas ocasiones, incluso puede llegar a demorar mas tiempo que la misma ejecucion de la sentencia.

About these ads

5 comentarios

  1. hola fer (jaja que confianzudo no?) muy bueno tu articulo igual y falto por ahi un ejemplito con el toad.

    saludos!!

    • Gracias Humberto por tu aporte!!

      No se si Toad, pero intentare agregar un ejemplo con SqlDeveloper.

      Un saludo,
      Fernando.

  2. Hola no viene lo que kiero

  3. Buen articulo, les agradecería pudieran poner un ejemplo con SQL Developer.. Saludos !!

  4. Hola Fernando, buen articulo, se echo de menos el broche de oro ,un ejemplo con SQL Developer


Comments RSS TrackBack Identifier URI

Deja un comentario

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

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.