cómo Qué es un índice de base de datos
Imagina buscar una palabra en un libro grueso. Leer de la primera página a la última toma demasiado. Por eso un libro tiene un índice al final. Lista palabras con números de página, así saltas directo a esa página. Una base de datos es igual. Cuando los datos crecen, recorrerlos desde el inicio es muy lento, así que construye un índice, una especie de mapa de búsqueda, de antemano.
Un libro tiene un índice al final
Antes vimos cómo una base de datos
encuentra la fila que quiere.
Pero cuando hay muchos datos,
recorrerlos de inicio a fin es lento.
Es igual que cazar una palabra
en un libro grueso desde la primera página.
Por eso un libro tiene un índice al final.
Un número de página va junto a cada palabra,
así saltas directo a esa página.
Compara recorrer el texto desde el inicio con saltar usando el índice. ¿Cuántos pasos toma cada uno?
Saltar con el índice
lo encontró en muchos menos pasos.
El índice de una base de datos
es exactamente esta búsqueda.
Es un mapa hecho de antemano
para hallar los datos rápido.
Pero los índices vienen en tipos.
Hallar un valor exacto
y hallar un rango son distintos.
Para un valor exacto, un índice hash
A veces quieres hallar
solo un valor exacto, como "Kim".
Para eso, un índice hash va bien.
Un hash toma el nombre
y calcula un número de casilla al instante.
Así, sin recorrer fila por fila,
salta a esa casilla en un paso.
Es como saber el número de un casillero
y abrir justo ese.
Toca un nombre y el hash calcula un número de casilla, saltando a esa caja en un paso.
Con solo un nombre
halló el lugar de una vez.
Un índice hash es así de rápido
para hallar un valor exacto.
Pero tiene un punto débil.
Un hash dispersa los valores,
así que hallar por un rango,
como "de 20 a 30 años",
lo hace mal. Ahí hace falta otro índice.
Para un rango, un índice de árbol
A veces quieres hallar
por un rango, como "de 20 a 30 años".
Para eso, un índice de árbol va bien.
Un índice de árbol mantiene los valores
ordenados de menor a mayor.
Así, una vez hallado el valor inicial,
puedes correr justo a su lado,
recorriendo en orden los valores del rango.
Es como un diccionario en orden alfabético.
Toca para fijar el rango a hallar. El índice de árbol ordenado halla el valor inicial y recorre el rango.
Como está ordenado,
el rango corrió suave hacia el lado.
Un hash localiza un punto,
un árbol recorre una línea.
Así que el índice correcto depende
de lo que buscas a menudo.
Muchos valores exactos, usa hash;
muchos rangos, usa árbol.
Pero un índice no es gratis.
Un índice no es gratis
Un índice también tiene desventajas.
Primero, ocupa espacio extra.
Como la búsqueda se escribe aparte,
usa ese tanto más de sitio.
Segundo, cuando los datos cambian
el índice debe cambiar con ellos.
Si añades o borras una fila,
la búsqueda hay que actualizarla para que cuadre.
Así que crear muchos a ciegas es una pérdida.
Añade o borra una fila. Cada vez que los datos cambian, el índice también se actualiza, y el espacio que usa crece.
Cada vez que los datos cambiaban
el índice se movía con ellos.
Y ocupaba más y más espacio.
Por eso hacemos un índice
solo para valores que buscamos a menudo.
Sopesamos la ganancia de velocidad
contra el costo de espacio y actualizaciones
en una balanza.
Bien elegido, las búsquedas van mucho más rápidas.
Resumamos
Reunido en una línea, es esto.
Un índice, como la búsqueda al final del libro,
es un mapa que te deja saltar rápido.
Un índice hash localiza un valor exacto
de un solo paso,
y un índice de árbol, al estar ordenado,
va bien para recorrer un rango.
Pero usa espacio extra
y hay que actualizarlo cuando los datos cambian.
Toca los puntos clave en orden para repasar. (búsqueda del libro -> hash para exacto -> árbol para rango -> no es gratis)
Ahora sabes cómo un índice
hace rápidas las búsquedas.
Hemos visto cómo hallar datos rápido,
así que ahora pasamos a manejar
los datos de forma segura.
¿Qué pasa cuando muchas personas
tocan los mismos datos a la vez?
Resolvamos ese problema delicado
juntos en la próxima lección.