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.DISPLAY
como 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:
##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.