Resumen de Índices
Un índice es una estructura opcional, asociado con una mesa
o tabla de clúster, que a veces puede acelerar el acceso de datos. Mediante la
creación de un índice en una o varias columnas de una tabla, se obtiene la
capacidad en algunos casos, para recuperar un pequeño conjunto de filas
distribuidas al azar de la tabla. Los índices son una de las muchas formas de
reducir el disco I / O.
Si una tabla de montón organizado no tiene índices,
entonces la base de datos debe realizar un escaneo completo de tabla para
encontrar un valor. Por ejemplo, sin un índice, una consulta de ubicación 2700
en la tabla hr.departments requiere la base de datos para buscar todas las
filas de cada bloque de la tabla para este valor. Este enfoque no escala bien
como datos de aumento de volúmenes.
Por analogía, supongamos que un gerente de Recursos Humanos
tiene un estante de cajas de cartón. Las carpetas que contienen información de
los empleados se insertan aleatoriamente en las cajas. La carpeta de empleado
Whalen (ID 200) es de 10 carpetas desde el fondo de la caja 1, mientras que la
carpeta para el rey (ID 100) se encuentra en la parte inferior del cuadro 3.
Para localizar una carpeta, el gestor busca en cada carpeta en la casilla 1 de
abajo hacia arriba, y luego se mueve de una casilla a otra hasta que se
encuentra la carpeta. Para acelerar el acceso, el administrador puede crear un
índice que enumera de forma secuencial todos los ID de empleado con su
ubicación de la carpeta:
ID 100: Box 3, position 1 (bottom)
ID 101: Box 7, position 8
ID 200: Box 1, position 10
Del mismo modo, el administrador podría crear índices
separados para los últimos nombres de los empleados, los ID de departamento, y
así sucesivamente.
En general, considerar la creación de un índice en una columna en cualquiera de
las siguientes situaciones:
·
Las columnas indizadas se consultan con
frecuencia y devuelven un pequeño porcentaje del número total de filas en la
tabla.
·
Existe una restricción de integridad
referencial en la columna o columnas indexadas. El índice es un medio para
evitar un bloqueo de tabla completa que de otro modo se requeriría si se
actualiza la clave principal de la tabla principal, se funden en la tabla
principal, o eliminar de la tabla primaria.
·
Una restricción de clave única se coloca
sobre la mesa y desea especificar manualmente el índice de todas las opciones
sobre índices y.
Características de Indexación
Los índices son objetos de esquema que son lógica y
físicamente independiente de los datos de los objetos con los que están
asociados. Por lo tanto, un índice se puede quitar o creado sin afectar
físicamente a la tabla para el índice.
Nota: Si se le cae un índice, las aplicaciones siguen
funcionando. Sin embargo, el acceso de los datos previamente indexado puede ser
más lento.
La ausencia o presencia de un índice no requiere un cambio
en el texto de cualquier sentencia SQL. Un índice es una ruta de acceso rápido
a una sola fila de datos. Sólo afecta a la velocidad de ejecución. Dado un
valor de datos que se ha indexado, el índice apunta directamente a la ubicación
de las filas que contienen ese valor.
La base de datos mantiene automáticamente y utiliza los
índices después de su creación. La base de datos también refleja
automáticamente los cambios en los datos, como agregar, actualizar y eliminar
filas, en todos los índices pertinentes sin acciones adicionales requeridas por
los usuarios. Rendimiento de recuperación de datos indexados permanece casi
constante, incluso cuando se insertan filas. Sin embargo, la presencia de
muchos índices en una tabla degrada el rendimiento DML porque la base de datos
también debe actualizar los índices.
Los índices tienen las siguientes propiedades:
·
Facilidad de Uso
Los índices son utilizables (por defecto) o inutilizable.
Un índice inutilizables no se mantiene por las operaciones DML y es ignorado
por el optimizador. Un índice inutilizable puede mejorar el rendimiento de las
cargas a granel. En lugar de dejar un índice y luego volverlo a crear, puede
hacer que el índice inservible y luego reconstruirlo. Índices inutilizables y
las particiones de índice no consumen espacio. Cuando usted hace un índice
utilizable no utilizable, la base de datos cae su segmento de índice.
·
Visibilidad
Los índices son visibles (por defecto) o invisible. Un
índice invisible se mantiene por las operaciones DML y no se utiliza de forma
predeterminada por el optimizador. Cómo hacer una invisible índice es una
alternativa a lo que es inutilizable o se caiga. Índices invisibles son
especialmente útiles para probar la eliminación de un índice antes de dejarlo
caer o mediante índices temporalmente sin afectar a la aplicación general.
Guía del Administrador para Aprender a Manejar los Índices
·
Base de datos Oracle Performance Tuning Guide
para aprender cómo ajustar los índices
Teclas y Columnas
Una clave es un conjunto de columnas o expresiones en las
que se puede construir un índice. Aunque los términos se usan indistintamente,
los índices y las claves son diferentes. Los índices son estructuras
almacenados en la base de datos que los usuarios a administrar el uso de
sentencias de SQL. Las claves son estrictamente un concepto lógico.
La siguiente sentencia crea un índice en la columna
customer_id de la muestra oe.orders tabla:
CREATE INDEX
ord_customer_ix ON orders (customer_id);
En la
declaración anterior, la columna customer_id es la clave de índice. El índice
en sí se llama ord_customer_ix.
Índices Compuestos
Un índice compuesto, también llamado índice concatenado, es
un índice de varias columnas de una tabla. Las columnas de un índice compuesto
que deben aparecer en el orden que tenga más sentido para las consultas que
recuperar datos y no necesita ser adyacente en la tabla.
Los índices compuestos pueden acelerar la recuperación de
datos para las instrucciones SELECT en la que el DONDE referencias cláusula
totalidad o la parte principal de las columnas en el índice compuesto. Por lo
tanto, el orden de las columnas utilizadas en la definición es importante. En
general, las columnas de acceso más común van primero.
Por ejemplo, supongamos que una aplicación realiza
consultas frecuentes a apellidos, job_id, y columnas de salario en la tabla
empleados. También asumir que last_name tiene alta cardinalidad, lo que
significa que el número de valores distintos que es grande en comparación con
el número de filas de la tabla. Se crea un índice con el siguiente orden de las
columnas:
CREATE INDEX
employees_ix
ON employees
(last_name, job_id, salary);
Las consultas que acceden a las tres columnas, sólo la
columna last_name, o sólo el last_name y columnas job_id utilizan este índice.
En este ejemplo, las consultas que no tienen acceso a la columna last_name no
utilizan el índice.
Nota: En algunos casos, tales como cuando la columna
principal tiene muy baja cardinalidad, la base de datos puede utilizar una
búsqueda selectiva de este índice.
Múltiples índices pueden existir para la misma mesa,
siempre y cuando la permutación de columnas difiere para cada índice. Puede
crear varios índices que utilizan las mismas columnas si se especifica
claramente diferentes permutaciones de las columnas. Por ejemplo, las siguientes sentencias SQL especifican
permutaciones válidas:
CREATE INDEX
employee_idx1 ON employees (last_name, job_id);
CREATE INDEX
employee_idx2 ON employees (job_id, last_name);
Índices Únicos y no Únicos
Los índices pueden ser únicos o no únicos. Índices únicos
garantizar que no hay dos filas de una tabla tienen valores duplicados en la
columna de clave o columna. Por ejemplo, dos empleados no pueden tener el mismo
ID de empleado. Por lo tanto, en un índice único, existe una ROWID para cada
valor de datos. Los datos de los bloques de hojas se ordenan sólo por clave.
Índices no únicas permiten valores duplicados en la columna
o columnas indexadas. Por ejemplo, la columna 'nombre de la tabla de empleados
puede contener varios valores Mike. Para un índice no único, el ROWID se
incluye en la clave de forma ordenada, por lo que los índices no únicos se
ordenan por la clave de índice y ROWID (ascendente).
Oracle Database no filas de la tabla de índice en el que
todas las columnas clave son nulas, a excepción de los índices de mapa de bits
o cuando el valor de la columna clave de clúster es nulo.
Tipos de Índices
Base de Datos Oracle ofrece varias combinaciones de
indexación, que proporcionan una funcionalidad complementaria sobre el
rendimiento. Los índices se pueden clasificar de la siguiente manera:
·
Los Índices de Árbol B
Estos índices son el tipo de índice estándar. Son
excelentes para la clave principal y los índices altamente selectivos.
Utilizado como índices concatenados, B-tree índice pueden recuperar los datos
ordenados por las columnas de índice. Índices B-tree tienen los siguientes
subtipos:
·
Índice de Tablas Organizadas
Una tabla de índice-organizada difiere de un
montón-organizado porque los datos es en sí mismo el índice.
En este tipo de índice, los bytes de la clave de índice se
invierten, por ejemplo, 103 se almacena como 301. La inversión de bytes
extiende inserta en el índice durante muchos bloques.
·
Índices Descendentes
Este tipo de índice almacena los datos en una columna o
columnas de concreto en orden descendente.
·
Índices B-Tree de Racimo
Este tipo de índice se utiliza para indexar una clave de
clúster tabla. En lugar de apuntar a una fila, los puntos clave para el bloque
que contiene filas relacionadas con la clave de clúster.
·
Mapa de Bits y los Índices Bitmap Join
En un índice de mapa de bits, una entrada de índice utiliza
un mapa de bits para que apunte a varias filas. En cambio, los puntos de
entrada de un índice B-tree en una sola fila. Un índice de combinación de mapa
de bits es un índice de mapa de bits para la unión de dos o más tablas.
Consulte "Indicadores de mapa de bits".
·
Indices Basados en Funciones
Este tipo de índice incluye columnas que, o bien se
transforman por una función, tales como la función UPPER, o incluidos en una
expresión. Índices B-tree o mapa de bits puede ser basado en las funciones.
·
Índices de Dominio de Aplicación
Este tipo de índice se crea por un usuario para los datos
en un dominio específico de la aplicación. El índice físico no tiene que
utilizar una estructura de índice tradicional y se puede almacenar ya sea en la
base de datos Oracle como tablas o externamente como un archivo. Consulte
"Indicadores de dominio de aplicación".
·
Índices B-Tree
Árboles B, abreviatura de árboles balanceados, son el tipo
más común de índice de base de datos. Un índice B-tree es una lista ordenada de
valores dividida en rangos. Mediante la asociación de una tecla con una fila o
rango de filas, los árboles B proporcionan un excelente rendimiento de la
recuperación para una amplia gama de consultas, incluyendo coincidencia exacta
y búsquedas por rango.
Comentarios
Publicar un comentario