¿Alguien puede explicar un poco sobre el plan de explicación y cómo se obtiene el plan de explicación para una consulta? Además, si hay algún script sql que se pueda utilizar como utilidad para esto, sería genial.
oracle
oracle-11g-r2
usuario419534
fuente
fuente
Respuestas:
Puede usar el paquete DBMS_XPLAN :
fuente
Reemplace el ... con su instrucción SQL. Después de ejecutar esto, ejecute lo siguiente para ver el plan:
Para obtener más información, consulte las secciones Descripción general o Uso en la Guía de ajuste de rendimiento de Oracle 11g.
fuente
El plan de ejecución SQL estimado
El optimizador 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 EXPLAIN PLAN FOR o puede usar Oracle SQL Developer para esta tarea.
EXPLIQUE 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 asociadoPLAN_TABLE
:Para ver el plan de ejecución estimado, debe usar
DBMS_XPLAN.DISPLAY
, como se ilustra en el siguiente ejemplo:Oracle SQL Developer
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 optimizador genera el plan de ejecución SQL real cuando 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 adecuadamente las estadísticas de la tabla.
Sugerencia de consulta GATHER_PLAN_STATISTICS
Para indicar a Oracle que almacene el plan de ejecución real para una consulta SQL dada, puede usar la
GATHER_PLAN_STATISTICS
sugerencia de consulta:Para visualizar el plan de ejecución real, puede usar
DBMS_XPLAN.DISPLAY_CURSOR
:Habilite ESTADÍSTICAS en el nivel de conexión DB
Si desea obtener los planes de ejecución para todas las consultas generadas dentro de una sesión determinada, puede establecer la configuración de la
STATISTICS_LEVEL
sesión en ALL:Esto tendrá el mismo efecto que configurar la
GATHER_PLAN_STATISTICS
sugerencia de consulta en cada consulta de ejecución. Entonces, al igual que con laGATHER_PLAN_STATISTICS
sugerencia de consulta, puede usarDBMS_XPLAN.DISPLAY_CURSOR
para ver el plan de ejecución real.fuente