optimizar lentas index consultas database indexing

database - lentas - ¿Qué es un índice de base de datos?



database index (5)

¡Escribí un libro completo sobre eso! También está disponible de forma gratuita en la web: http://use-the-index-luke.com/

Intento responder a tus preguntas en breve, que no es exactamente lo que soy bueno. La última vez que lo intenté, terminé escribiendo un libro ...

Al igual que las tablas, los índices constan de filas y columnas, pero almacenan los datos de una manera lógica ordenada para mejorar el rendimiento de la búsqueda. Piense en ello como una guía telefónica (una impresa). Por lo general, se ordenan last_name , first_name y potencialmente otros criterios (por ejemplo, código postal). Esta clasificación permite encontrar rápidamente todas las entradas de un apellido específico. Si también conoce el nombre, puede encontrar las entradas para la combinación apellido / nombre rápidamente.

Sin embargo, si solo conoce el nombre, la guía telefónica no lo ayudará. Lo mismo es cierto para los índices de bases de datos de varias columnas. Entonces, sí, un índice puede mejorar el rendimiento de la búsqueda. Si tiene un índice incorrecto para su pregunta (por ej., Una guía telefónica cuando busca por nombre), podrían ser inútiles.

Puede tener muchos índices en la misma tabla pero en columnas diferentes. Por lo tanto, un índice en last_name , first_name es diferente de un índice en first_name only (que necesitaría para optimizar las búsquedas por nombre).

Los índices contienen datos redundantes (por ejemplo, índices agrupados = directorio telefónico). Tienen la misma información que se almacena en la tabla (por ejemplo , índices basados ​​en función ), pero de una manera ordenada. La base de datos mantiene automáticamente esta redundancia para cada operación de escritura que realice ( insert/update/delete ). En consecuencia, el rendimiento de escritura de disminución indexada.

Además de encontrar datos rápidamente, los índices también se pueden utilizar para optimizar las operaciones de clasificación ( order by ) y organizar físicamente los datos relacionados muy de cerca ( clustering ).

Para obtener una mejor idea, consulte la tabla completa de contenidos de mi libro: http://use-the-index-luke.com/sql/table-of-contents

Esta pregunta ya tiene una respuesta aquí:

Los escuché hablar desde que comencé a trabajar en tecnología hace 18 meses. Sé que potencialmente mejoran el rendimiento, y parecen ser específicos de la columna: ("Indexamos la tabla de usuarios en la columna date_of_birth").

Solo estoy buscando una visión general rápida de qué son exactamente, para qué se utilizan y cómo funcionan.


Piénselo como una tabla de contenidos para tablas. Si está allí, la base de datos sabe dónde buscar más específica. Si no está allí, la base de datos tiene que buscar a través de todos los datos para encontrarlo.

Una forma más detallada de explicación se puede encontrar aquí en este artículo de Wikipedia .


Tiene un hilo similar que se ejecuta aquí . Verifica, es útil.

Sé que potencialmente mejoran el rendimiento

Sí, es verdad. Pero tenga en cuenta que, a veces, la indexación también puede ser el motivo de un rendimiento deficiente . Ejemplo: Indexar todas las columnas de una base de datos afectará sin duda el rendimiento.


Un índice de base de datos es una estructura de datos destinada a mejorar la complejidad del tiempo de la operación de búsqueda.

La búsqueda sin índice es, en el peor de los casos, O(N) complejidad. La búsqueda eficiente con índice permite O(log(N)) logarítmico O(log(N)) o incluso con alguna arquitectura O(1) complejidad.

Un índice de base de datos también hace posible hacer cumplir las restricciones de DB. Muchos sistemas DB establecen un índice en un conjunto de columnas denominado PRIMARY KEY . Algunos sistemas DB requieren columnas indexadas en una FOREIGN KEY , a fin de acelerar las operaciones (insertar, actualizar).


Un índice es una estructura opcional, asociada con una tabla o un clúster de tabla, que a veces puede acelerar el acceso a los datos. Al crear un índice en una o más columnas de una tabla, en algunos casos obtiene la capacidad de recuperar un pequeño conjunto de filas distribuidas al azar de la tabla. Los índices son uno de los muchos medios para reducir la E / S de disco.

Si una tabla organizada en el montón no tiene índices, la base de datos debe realizar un análisis completo de la tabla para encontrar un valor. Por ejemplo, sin un índice, una consulta de la ubicación 2700 en la tabla hr.departments requiere que la base de datos busque cada fila en cada bloque de tabla para este valor. Este enfoque no se escala bien a medida que aumentan los volúmenes de datos.

http://docs.oracle.com/cd/E11882_01/server.112/e10713/indexiot.htm