seegongsik
Datos

Qué es un índice de base de datos

Imagina que buscas una palabra en un libro grueso. Leer desde la primera página hasta la última llevaría demasiado tiempo. Por eso los libros tienen un índice al final: cada palabra aparece con un número de página, así que puedes ir directo a esa página. Con una base de datos pasa lo mismo. Cuando hay muchos datos, recorrerlo todo desde el principio es demasiado lento, así que se prepara de antemano una lista de consulta llamada índice.

01

Los libros tienen un índice al final

En las lecciones anteriores vimos cómo una base de datos encuentra la fila que busca, y cómo el hash y los árboles equilibrados encuentran las cosas rápido. Ahora toca ver cómo se usan esas herramientas dentro de una base de datos.
Cuando hay muchísimos datos, recorrerlos de principio a fin es lento, igual que buscar una palabra en un libro grueso desde la primera página. Por eso los libros tienen al final un índice con el número de página junto a cada palabra.

Hallar una palabra en un libro grueso
page 1
page 2
page 3
page 4
page 5palabra a hallar
page 6
índice: palabra → página 5
Toca ambas formas para comparar los pasos

Toca recorrer el texto desde el principio y saltar con el índice para compararlos. Cuenta cuántos pasos necesita cada uno.

Saltando con el índice, encontraste la palabra en muchos menos pasos. El índice de una base de datos es justamente esta clase de lista de consulta: se elige una columna de una tabla y se anota de antemano cada valor junto con la posición de su fila.
Pero hay distintos tipos de índice, porque encontrar un valor exacto y encontrar un rango piden métodos diferentes.

02

Un índice hash para valores exactos

A veces quieres encontrar un valor exacto, como "Kim Chulsoo". En ese caso, un índice hash va muy bien.
El hash que vimos antes recibe el nombre y calcula al instante el número de casilla, así que, en lugar de recorrer fila tras fila, saltas a esa casilla de una vez. Es como recordar el número de tu casillero y abrir esa casilla directamente.

nombres (valor exacto)
casillas
0
1
2
3
4
Toca un nombre para hallar su casilla con el hash

Toca un nombre: el hash calcula el número de su casilla y salta allí de una vez.

Un solo nombre te llevó directo a su casilla. Un índice hash es muy rápido para encontrar un valor exacto así.
Pero tiene un punto débil. Como el hash reparte los valores sin relación con su tamaño, no puede buscar por rangos, como "de 20 a 30 años". Para eso hace falta otro índice.

03

Un índice de árbol para rangos

A veces quieres buscar por rangos, como "de 20 a 30 años". En ese caso, un índice de árbol va muy bien. Se construye con un árbol equilibrado como el de la lección anterior, así que mantiene los valores ordenados de menor a mayor.
Una vez que encuentras el valor inicial, puedes seguir de largo desde ahí y recorrer en orden los valores del rango, igual que en un diccionario ordenado alfabéticamente. De hecho, la mayoría de las bases de datos usan este índice de árbol por defecto.

índice de árbol ordenado (edad)
Toca el valor inicial del rango

Toca para fijar el rango que buscas. El índice de árbol ordenado encuentra el valor inicial y recorre el rango.

Como los valores están ordenados, el rango siguió de largo, uno al lado de otro. El hash da justo en un punto, mientras que el árbol recorre una línea.
Así que el índice adecuado depende de lo que más busques: hash si buscas mucho valores exactos, árbol si buscas mucho por rangos. Pero un índice no es gratis.

04

Un índice no es gratis

Un índice no solo trae ventajas. Primero, ocupa espacio extra: como la lista de consulta se anota aparte, necesita ese tanto más de almacenamiento.
Segundo, cuando cambian los datos, el índice también hay que actualizarlo. Cada vez que se añade o se borra una fila, la lista de consulta también se tiene que corregir, así que escribir se vuelve más lento en esa medida. Por eso crear índices sin pensar puede salir más caro que no tenerlos.

tabla de datos
Ann
Ben
Cho
índice (búsqueda)
Ann#0
Ben#1
Cho#2
espacio que usa el índice: 3 celdas
Añade o borra una fila y el índice la sigue

Añade o borra una fila. Cada vez que cambian los datos, el índice se actualiza con ellos y el espacio que usa crece.

Cada vez que cambiaste los datos, el índice se movió con ellos y ocupó cada vez más espacio. Por eso los índices se crean solo en las columnas que se buscan a menudo.
Se pesa en una balanza la ventaja de la rapidez frente al costo del espacio y de mantener el índice al día. Si eliges bien, buscar se vuelve mucho más rápido.

05

En resumen

En pocas palabras: un índice es una lista de consulta, como el índice de un libro, que te permite saltar directo al lugar que buscas. Un índice hash da en un solo paso con un valor exacto, y un índice de árbol, como está ordenado, va muy bien para recorrer un rango.
Pero los índices ocupan espacio extra y hay que actualizarlos cada vez que cambian los datos. Por eso se crean solo en las columnas que se buscan a menudo.

1. índice del libro = mapa para saltar rápido
2. índice hash para un valor exacto
3. índice de árbol ordenado para un rango
4. no es gratis (espacio + actualizaciones)
Pulsa el botón para repasar los puntos clave en orden

Toca en orden los puntos clave para repasar. (el índice de un libro → hash para valores exactos → árbol para rangos → no es gratis)

Ahora ya sabes cómo un índice hace que buscar sea rápido. Hasta aquí hemos manejado datos alineados en las filas de una tabla.
Pero a veces lo que más importa son las conexiones entre los datos, como las amistades o las líneas del metro. La próxima lección presenta los datos guardados como puntos unidos por líneas: el grafo.

En una líneaCuando hay muchos datos, recorrerlo todo desde el principio es lento. Un índice es una lista de consulta preparada de antemano, como el índice de un libro, para que una base de datos pueda saltar directo al lugar que busca. Hay dos tipos. Un índice hash da en un solo paso con un valor exacto. Un índice de árbol mantiene los valores ordenados, así que va muy bien para buscar por rangos. Pero un índice no es gratis: ocupa espacio extra y, cuando cambian los datos, también hay que actualizarlo. Aun así, bien creado en las columnas que se buscan a menudo, hace que buscar sea mucho más rápido.
← Datos
¿Te fue útil? Apoyar seegongsik