Índice de la base de datos


Un índice de base de datos es una estructura de datos que mejora la velocidad de las operaciones de recuperación de datos en una tabla de base de datos a costa de escrituras adicionales y espacio de almacenamiento para mantener la estructura de datos del índice. Los índices se utilizan para ubicar datos rápidamente sin tener que buscar cada fila en una tabla de base de datos cada vez que se accede a una tabla de base de datos. Los índices se pueden crear utilizando una o más columnas de una tabla de base de datos , proporcionando la base tanto para búsquedas aleatorias rápidas como para un acceso eficiente a los registros ordenados.

Un índice es una copia de columnas de datos seleccionadas, de una tabla, que está diseñada para permitir una búsqueda muy eficiente. Un índice normalmente incluye una "clave" o enlace directo a la fila original de datos de la que se copió, para permitir que la fila completa se recupere de manera eficiente. Algunas bases de datos amplían el poder de la indexación al permitir que los desarrolladores creen índices en valores de columna que han sido transformados por funciones o expresiones . Por ejemplo, se podría crear un índice en upper(last_name), que solo almacenaría las versiones en mayúsculas del last_namecampo en el índice. Otra opción que a veces se admite es el uso de índices parciales , donde las entradas de índice se crean solo para aquellos registros que satisfacen alguna expresión condicional. Otro aspecto de la flexibilidad es permitir la indexación enfunciones definidas por el usuario , así como expresiones formadas a partir de una variedad de funciones integradas.

La mayoría del software de base de datos incluye tecnología de indexación que permite la búsqueda de tiempo sublineal para mejorar el rendimiento, ya que la búsqueda lineal es ineficaz para grandes bases de datos.

Suponga que una base de datos contiene N elementos de datos y se debe recuperar uno en función del valor de uno de los campos. Una implementación simple recupera y examina cada elemento de acuerdo con la prueba. Si solo hay un elemento coincidente, esto puede detenerse cuando encuentra ese único elemento, pero si hay varias coincidencias, debe probar todo. Esto significa que el número de operaciones en el caso promedio es O (N) o tiempo lineal . Dado que las bases de datos pueden contener muchos objetos, y dado que la búsqueda es una operación común, a menudo es deseable mejorar el rendimiento.

Un índice es cualquier estructura de datos que mejora el rendimiento de la búsqueda. Hay muchas estructuras de datos diferentes que se utilizan para este propósito. Hay compensaciones de diseño complejas que involucran el rendimiento de la búsqueda, el tamaño del índice y el rendimiento de la actualización del índice. Muchos diseños de índices exhiben un rendimiento de búsqueda logarítmico ( O (log (N))) y en algunas aplicaciones es posible lograr un rendimiento plano ( O (1)).

Los índices se utilizan para controlar las restricciones de la base de datos , como ÚNICO, EXCLUSIÓN, CLAVE PRIMARIA y CLAVE EXTRANJERA . Un índice se puede declarar como ÚNICO, lo que crea una restricción implícita en la tabla subyacente. Los sistemas de bases de datos generalmente crean implícitamente un índice en un conjunto de columnas declaradas CLAVE PRIMARIA, y algunos son capaces de usar un índice ya existente para controlar esta restricción. Muchos sistemas de bases de datos requieren que tanto los conjuntos de columnas de referencia como los de referencia en una restricción FOREIGN KEY estén indexados, mejorando así el rendimiento de inserciones, actualizaciones y eliminaciones en las tablas que participan en la restricción.