Índices

Un índice es un conjunto de punteros ordenados lógicamente por los valores de una o varias claves. Los punteros pueden hacer referencia a filas de una tabla, bloques de una tabla MDC o ITC, datos XML en un objeto de almacenamiento XML, etc.

Los índices se utilizan para:
  • Mejorar el rendimiento. En la mayoría de los casos, el acceso a los datos es más rápido con un índice. Aunque no puede crearse un índice para una vista, un índice creado para la tabla en la que se basa una vista puede mejorar a veces el rendimiento de las operaciones en esta vista.
  • Asegurar la exclusividad. Una tabla con un índice de unicidad no puede tener filas con claves idénticas.

Cuando se agregan datos a una tabla, se añaden al final (salvo que se hayan ejecutado otras acciones en la tabla o en los datos que se están agregando). No existe un orden inherente para los datos. Cuando se busca una fila de datos determinada, debe buscarse en cada fila de la tabla desde la primera hasta la última. Los índices se utilizan como un medio para acceder a los datos de la tabla según un orden que, de otra manera, podría no estar disponible.

Generalmente, cuando se buscan datos en una tabla, se buscan filas con columnas que tengan valores específicos. Se puede utilizar un valor de columna de una fila de datos para identificar toda la fila. Por ejemplo, un número de empleado definiría probablemente de forma específica a un empleado individual concreto. O bien podría necesitarse más de una columna para identificar la fila. Por ejemplo, una combinación de nombre y teléfono de cliente. Las columnas de un índice que se utilizan para identificar las filas de datos se denominan claves. Se puede utilizar una columna en más de una clave.

Un índice se ordena según los valores que contiene una clave. Las claves pueden ser exclusivas o no exclusivas. Cada tabla debe tener como mínimo una clave exclusiva; pero también puede tener otras claves no exclusivas. Cada índice tiene exactamente una clave. Por ejemplo, puede utilizar el número de ID de empleado (exclusivo) como clave exclusiva para un índice y el número de departamento (no exclusivo) como clave para un índice diferente.

No todos los índices apuntan a filas de una tabla. Los índices de bloques MDC e ITC apuntan a extensiones (o bloques) de los datos. Los índices XML para datos XML utilizan expresiones de patrones XML determinados para vías y valores de índices en documentos XML almacenados en una única columna. El tipo de datos de dicha columna debe ser XML. Tanto los índices de bloques MDC e ITC como los índices XML son índices generados por el sistema.

Ejemplo

La tabla A de la Figura 1 tiene un índice basado en los números de empleados de la tabla. Este valor de clave proporciona un puntero a las filas de la tabla. Por ejemplo, el número de empleado 19 apunta al empleado KMP. Un índice permite un acceso eficaz a las filas de una tabla creando una vía de acceso a los datos mediante punteros.

Se pueden crear índices exclusivos para asegurar la exclusividad de la clave de índice. Una clave de índice es una columna o una recopilación ordenada de columnas en la que se define un índice. La utilización de un índice exclusivo asegura que el valor de cada clave de índice de la columna o columnas indexadas es exclusivo.

La Figura 1 muestra la relación entre un índice y una tabla.

Figura 1. Relación entre un índice y una tabla
Gráfico que muestra la relación entre un índice y una tabla.

La Figura 2 ilustra las relaciones entre algunos objetos de base de datos. También muestra que las tablas, índices y datos extensos se almacenan en espacios de tablas.

Figura 2. Relaciones entre objetos de base de datos seleccionados
Gráfico que muestra la relación entre objetos de base de datos.