El concepto de Rowid:
Rowid es una pseudocolumna. Dado que es una pseudocolumna, esta columna no la define el usuario, sino que la agrega el propio sistema. Hay una pseudocolumna de ID de fila para cada tabla, pero el valor de la columna ROWID no se almacena físicamente en la tabla. Sin embargo, puede usarla como cualquier otra columna, pero no puede eliminar ni cambiar la columna, ni puede modificar o insertar el valor de la columna. Una vez que se inserta una fila de datos en la base de datos, el ID de fila es único durante el ciclo de vida de la fila, es decir, incluso si la fila sufre una migración de fila, el ID de fila no cambiará.
¿Por qué utilizar ROWID?
Rowid proporciona el método de acceso más rápido a una fila determinada en una tabla. El bloque de datos correspondiente se puede ubicar directamente a través de ROWID y luego leerlo en la memoria. Cuando creamos un índice, el índice no solo almacena el valor de la columna del índice, sino que también almacena el ROWID de la fila correspondiente al valor del índice. De esta manera, después de encontrar rápidamente el ROWID de la fila correspondiente a través del índice, Podemos consultar rápidamente los datos a través del ROWID. Por eso es más rápido cuando utilizamos consultas de índice.
En versiones anteriores de ORACLE8, ROWID constaba de ARCHIVO, BLOQUE y NÚMERO DE FILA. Con la expansión del concepto de objeto en Oracle8, ROWID ha cambiado. ROWID consta de OBJETO, ARCHIVO, BLOQUE y NÚMERO DE FILA. Puede usar DBMS_ROWID para descomponer el ID de fila en las partes anteriores, o puede combinar las partes anteriores en un ID de fila válido.
Concepto de SQL recursivo A veces, para ejecutar una declaración SQL emitida por el usuario, Oracle debe ejecutar algunas declaraciones adicionales. A estas declaraciones adicionales las llamamos 'llamadas recursivas' o 'declaraciones SQL recursivas'. Por ejemplo, cuando se emite una declaración DDL, ORACLE siempre emite implícitamente algunas declaraciones SQL recursivas para modificar la información del diccionario de datos para que el usuario pueda ejecutar con éxito la declaración DDL. Las llamadas recursivas a menudo ocurren cuando la información del diccionario de datos requerida no está en la memoria compartida. Estas llamadas recursivas leen la información del diccionario de datos del disco duro a la memoria. A los usuarios no les importa la ejecución de estas declaraciones SQL recursivas. ORACLE ejecutará automáticamente estas declaraciones internamente cuando sea necesario. Por supuesto, tanto las declaraciones DML como SELECT pueden provocar SQL recursivo. En pocas palabras, podemos pensar en los desencadenadores como SQL recursivo.
Fuente de fila
Utilizado en consultas, el conjunto de filas calificadas devueltas por la operación anterior puede ser un conjunto de todos los datos de las filas de la tabla; también puede ser un conjunto de datos de filas parciales de la tabla o puede ser un conjunto de los dos anteriores; fuentes de fila. Una colección de datos de fila obtenidos después de una operación de conexión (como unirse a una conexión).
Predicado
DONDE restricciones en una consulta
Mesa de conducción
Esta tabla también se llama tabla exterior (OUTER TABLE). Este concepto se utiliza en uniones anidadas y HASH. Si el origen de la fila devuelve más datos de fila, tendrá un impacto negativo en todas las operaciones posteriores. Tenga en cuenta que, aunque esto se traduce como tabla de conducción, en realidad se traduce con mayor precisión como fuente de fila de conducción. En términos generales, después de aplicar restricciones de consulta, la tabla con menos fuentes de filas se devuelve como tabla conductora. Por lo tanto, si una tabla grande tiene restricciones (como restricciones de igualdad) en la condición WHERE, la tabla grande también se utilizará como tabla conductora. table.Apropiado, por lo que no es que solo se puedan usar tablas más pequeñas como tablas de control. La afirmación correcta debe ser que después de aplicar las restricciones de consulta, la tabla que devuelve menos fuentes de filas se usa como tabla de control. En el plan de ejecución, debe ser la fuente de la fila superior. Se darán instrucciones específicas más adelante. En nuestra descripción posterior, esta tabla generalmente se denomina fuente de fila 1 de la operación de unión.
Mesa sondeada (tabla sondeada)
Esta tabla también se llama tabla interior (INNER TABLE). Después de obtener una fila específica de datos de la tabla de controladores, buscamos filas en la tabla que cumplan con las condiciones de unión. Por lo tanto, la tabla debería ser una tabla grande (en realidad debería ser una tabla que devuelva una fuente de fila más grande) y debería haber índices en las columnas correspondientes. En nuestra descripción posterior, esta tabla generalmente se denomina fuente de fila 2 de la operación de unión.
índice combinado (índice concatenado)
Un índice compuesto por varias columnas, como crear el índice idx_emp en emp (col1, col2, col3, ...), luego llamamos al índice idx_emp índice compuesto. Hay un concepto importante en el índice combinado: la columna principal. En el ejemplo anterior, la columna col1 es la columna principal. Cuando realizamos una consulta, podemos usar "dónde col1 =?" o "dónde col1 =? y col2 =?". Dichas restricciones utilizarán el índice, pero la consulta "dónde col2 =?" Por lo tanto, sólo cuando la columna principal esté incluida en la restricción, se utilizará el índice combinado para la restricción.
Selectividad:
Comparar el número de claves únicas en una columna con el número de filas en la tabla determina la selectividad de la columna. Si la relación entre el "número de claves únicas/número de filas en la tabla" de la columna está más cerca de 1, la selectividad de la columna es mayor, la columna es más adecuada para crear un índice y la selectividad del índice también es mayor. Al realizar consultas en columnas altamente seleccionables, se devolverán menos datos, por lo que las consultas de índice son más adecuadas.
Con estos conocimientos previos, comenzamos a presentar el plan de ejecución. Para ejecutar una declaración, es posible que Oracle deba implementar muchos pasos. Cada uno de estos pasos podría consistir en recuperar físicamente las filas de datos de la base de datos o prepararlas de alguna manera para que las utilice el usuario que emite la declaración. La combinación de estos pasos que utiliza Oracle para ejecutar una declaración se denomina plan de ejecución. El plan de ejecución es la parte más compleja y crítica de la optimización de SQL. Solo sabiendo cómo ejecuta ORACLE la declaración SQL internamente podemos saber si el plan de ejecución seleccionado por el optimizador es óptimo. Los planes de ejecución son tan importantes para los DBA como lo son los estados financieros para el personal financiero. Entonces, los principales problemas que enfrentamos son: cómo obtener el plan de ejecución, cómo analizar el plan de ejecución para descubrir los principales problemas que afectan el rendimiento; A continuación se comenzará con el análisis del plan de ejecución del árbol, luego se presentará cómo obtener el plan de ejecución y luego se presentará cómo analizar el plan de ejecución.
Ejemplo:
Este ejemplo muestra el plan de ejecución de la siguiente declaración SQL.
SELECCIONE nombre, trabajo, sal, nombre
DESDE emp, departamento
DONDE emp.deptno = derpt.deptno
Y NO EXISTE
(SELECCIONAR *
DE salgrado
DONDE emp.sal ENTRE losal Y hisal );
Esta declaración consulta el nombre, puesto, salario y nombre del departamento de todos los empleados cuyo salario no se encuentra dentro de ninguno de los rangos salariales recomendados.
Este artículo proviene del blog de CSDN. Indique la fuente al reimprimir: http://blog.csdn.net/lcyhjx/archive/2009/12/20/5044672.aspx.