Pasos para ejecutar el plan
Cada paso del plan de ejecución devuelve un conjunto de filas que se utilizan en el siguiente paso o, en el paso final, se devuelven al usuario o aplicación que emitió la declaración SQL. El conjunto de filas devueltas por cada paso se denomina fuente de fila. Figura 5-1 Un diagrama de árbol muestra el flujo de datos de un recorrido a otro. La numeración de cada paso refleja el orden en el que se muestran los pasos cuando ve el plan de ejecución (se explica brevemente cómo ver el plan de ejecución). Generalmente este no es el orden en el que se realiza cada paso. Cada paso del plan de ejecución recupera filas de la base de datos o recibe datos de filas como entrada de uno o más orígenes de filas:
Los pasos indicados por cuadros rojos recuperan físicamente datos de los archivos de datos en la base de datos. Este paso se denomina ruta de acceso. Las rutas de acceso que se pueden utilizar en Oracle se describirán en detalle más adelante:
Los pasos 3 y 6 leen todas las filas de la tabla EMP y la tabla SALGRADE respectivamente.
El paso 5 busca cada valor DEPTNO devuelto por el paso 3 en el índice PK_DEPTNO. Descubre los ROWID de aquellas filas asociadas con la tabla DEPT.
El paso 4 recupera de la tabla DEPT aquellas filas cuyo ROWID se devuelve en el paso 5.
Los pasos indicados por el cuadro de texto negro operan en la fuente de la fila, como la asociación, clasificación o filtrado entre 2 tablas se darán introducciones detalladas más adelante:
El paso 2 implementa operaciones de bucle anidado (equivalentes a bucles anidados en declaraciones C), recibe las fuentes de fila de los pasos 3 y 4 y compara cada fila de la fuente en el paso 3 con su fuente de fila en el paso 4. Las filas correspondientes se concatenan juntas y las filas resultantes se devuelven al paso 1.
El paso 1 completa una operación de filtrado. Recibe las fuentes de las filas de los pasos 2 y 6, elimina las filas del paso 2 que tienen filas correspondientes en el paso 6 y devuelve las filas restantes del paso 2 al usuario o la aplicación.
Implementar la secuencia de pasos del plan de ejecución.
Los pasos del plan de ejecución no se implementan en el orden en que están numerados: Oracle primero implementa los pasos que aparecen como hojas en el gráfico de estructura de árbol de la Figura 5-1 (por ejemplo, los pasos 3, 5 y 6). Las filas devueltas por cada paso se denominan fuentes de fila del siguiente paso. Luego, Oracle implementa el paso principal.
Por ejemplo, para ejecutar la declaración de la Figura 5-1, Oracle implementa estos pasos en el siguiente orden:
Primero, Oracle implementa el paso 3 y devuelve las filas de resultados al paso 2, fila por fila.
Para cada fila devuelta en el paso 3, Oracle implementa estos pasos:
-- Oracle implementa el paso 5 y devuelve el resultado ROWID al paso 4.
-- Oracle implementa el paso 4 y devuelve la fila de resultados al paso 2.
-- Oracle implementa el paso 2 y aceptará una fila del paso 3 y una fila del paso 4 y devolverá
Dale una línea al paso 1.
-- Oracle implementa el paso 6. Si hay una fila de resultados, devuélvala al paso 1.
-- Oracle implementa el paso 1. Si se devuelve una fila del paso 6, Oracle devuelve la fila del paso 2 a
El usuario que emitió la declaración SQL.
Tenga en cuenta que Oracle realiza los pasos 5, 4, 2 y 6 una vez por cada fila devuelta por el paso 3. Muchos pasos principales requieren solo una fila de sus pasos secundarios antes de poder ejecutarse. Para dicho paso principal, el paso principal (y posiblemente el resto del plan de ejecución) se implementa tan pronto como se devuelve una sola fila del paso secundario. Si el paso principal del paso principal también se puede activar mediante un retorno de una sola fila, también se ejecutará. Por lo tanto, las ejecuciones se pueden encadenar en el árbol, posiblemente incluyendo el resto del plan de ejecución. Para tales operaciones, puede utilizar first_rows como objetivo de optimización para responder rápidamente a las solicitudes de los usuarios.
Para cada fila recuperada por un paso secundario, Oracle implementa el paso principal y todos los pasos concatenados una vez. Los pasos principales que se activan para cada fila devuelta por un paso secundario incluyen acceso a tablas, acceso a índices, uniones de bucles anidados y filtros.
Algunos pasos principales requieren todas las filas de los pasos secundarios antes de poder implementarlos. Para dicho paso principal, Oracle no puede implementar el paso principal hasta que se hayan devuelto todas las filas del paso secundario. Dichos pasos principales incluyen Ordenar, Ordenar y unir, Función de grupo y Total. Para dicha operación, first_rows no se puede utilizar como objetivo de optimización, pero all_rows se puede utilizar como objetivo de optimización para que este tipo de operación consuma la menor cantidad de recursos.
A veces, cuando se ejecuta una declaración, no avanza paso a paso como se mencionó anteriormente, sino que puede ejecutarse en paralelo. Por ejemplo, en un entorno real, los pasos 3, 5 y 4 pueden ejecutarse en paralelo para lograr una mejor eficiencia. En el diagrama de árbol anterior, es difícil ver el orden en que se ejecuta cada operación. Sin embargo, a través de otra forma de plan de ejecución generado por ORACLE, es fácil ver qué operación se ejecuta primero y cuál se ejecuta después. El plan de ejecución es lo que realmente necesitamos y se explicará en detalle más adelante.
Este artículo proviene del blog de CSDN. Indique la fuente al reimprimir: http://blog.csdn.net/lcyhjx/archive/2009/12/20/5044799.aspx.
-