Saltar al contenido

¿Cómo puedo ver el plan de ejecución de SQL en Oracle?

Luego de consultar con especialistas en esta materia, programadores de deferentes ramas y profesores hemos dado con la solución al problema y la plasmamos en este post.

Solución:

Intenta usar este código para primero explicar y luego ver el plan:

Explique el plan:

explain plan 
for 
select * from table_name where ...;

Ver el plano:

select * from table(dbms_xplan.display);

Editar: Eliminado los corchetes

El plan de ejecución de SQL estimado

El Optimizer genera el plan de ejecución estimado sin ejecutar la consulta SQL. Puede generar el plan de ejecución estimado desde cualquier cliente SQL usando EXPLICAR PLAN PARA o puedes usar Desarrollador Oracle SQL para esta tarea

EXPLICAR PLAN PARA

Al usar Oracle, si antepone el EXPLAIN PLAN FOR comando a una consulta SQL dada, la base de datos almacenará el plan de ejecución estimado en el asociado PLAN_TABLE:

EXPLAIN PLAN FOR
SELECT p.id
FROM post p
WHERE EXISTS (
  SELECT 1
  FROM post_comment pc
  WHERE
    pc.post_id = p.id AND
    pc.review = 'Bingo'
)
ORDER BY p.title
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY

Para ver el plan de ejecución estimado, debe utilizar DBMS_XPLAN.DISPLAYcomo se ilustra en el siguiente ejemplo:

SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY (FORMAT=>'ALL +OUTLINE'))

La opción de formato TODO + ESQUEMA le permite obtener más detalles sobre el plan de ejecución estimado que con la opción de formato predeterminada.

Desarrollador Oracle SQL

Si ha instalado SQL Developer, puede obtener fácilmente el plan de ejecución estimado para cualquier consulta SQL sin tener que anteponer el comando EXPLAIN PLAN FOR:

ingrese la descripción de la imagen aquí

##El plan de ejecución de SQL real

El Optimizer genera el plan de ejecución SQL real cuando se ejecuta la consulta SQL. Entonces, a diferencia del plan de ejecución estimado, debe ejecutar la consulta SQL para obtener su plan de ejecución real.

El plan real no debe diferir significativamente del estimado, siempre que la base de datos relacional subyacente haya recopilado correctamente las estadísticas de la tabla.

Sugerencia de consulta GATHER_PLAN_STATISTICS

Para indicarle a Oracle que almacene el plan de ejecución real para una consulta SQL dada, puede usar el GATHER_PLAN_STATISTICS sugerencia de consulta:

SELECT /*+ GATHER_PLAN_STATISTICS */
  p.id
FROM post p
WHERE EXISTS (
  SELECT 1
  FROM post_comment pc
  WHERE
    pc.post_id = p.id AND
    pc.review = 'Bingo'
)
ORDER BY p.title
OFFSET 20 ROWS
FETCH NEXT 10 ROWS ONLY

Para visualizar el plan de ejecución real, puede utilizar DBMS_XPLAN.DISPLAY_CURSOR:

SELECT *
FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT=>'ALLSTATS LAST ALL +OUTLINE'))

Habilitar ESTADÍSTICAS para todas las consultas

Si desea obtener los planes de ejecución para todas las consultas generadas dentro de una sesión determinada, puede configurar el STATISTICS_LEVEL configuración de sesión a TODOS:

ALTER SESSION SET STATISTICS_LEVEL='ALL'

Esto tendrá el mismo efecto que establecer el GATHER_PLAN_STATISTICS sugerencia de consulta en cada consulta de ejecución. Entonces, al igual que con el GATHER_PLAN_STATISTICS sugerencia de consulta, puede usar DBMS_XPLAN.DISPLAY_CURSOR para ver el plan de ejecución real.

Deberías restablecer el STATISTICS_LEVEL configurar el modo predeterminado una vez que haya terminado de recopilar los planes de ejecución que le interesaban. Esto es muy importante, especialmente si está utilizando la agrupación de conexiones y las conexiones de la base de datos se reutilizan.

ALTER SESSION SET STATISTICS_LEVEL='TYPICAL'

Echa un vistazo a Explicar Plan. EXPLAIN funciona en muchos tipos de bases de datos.

Para sqlPlus específicamente, consulte la función AUTO TRACE de sqlplus.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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