ENES

Índice de base de datos

Un atajo ordenado para que la base encuentre filas sin leer toda la tabla.

A la izquierda, una tabla larga leída fila por fila de arriba a abajo; a la derecha, un árbol chico que llega a la fila correcta en tres saltos

Un índice es una estructura extra, guardada al lado de una tabla, que le permite a la base de datos saltar directo a las filas que le pedís. Sin uno, una consulta como 'buscá el cliente con email [email protected]' obliga a un recorrido completo (full scan): leer todas las filas hasta que aparezca. Con un índice sobre la columna email, la base busca el valor en una estructura ordenada y va directo a la fila correcta.

La mayoría de los índices son un B-tree: una estructura ordenada que se ramifica, donde cada paso achica la búsqueda, así que encontrar un valor entre cien millones lleva un puñado de saltos en vez de cien millones de lecturas. Se crea con una línea de SQL, CREATE INDEX ON clientes (email);, y desde ahí la base lo mantiene actualizado sola y decide cuándo usarlo.

Los índices no son gratis. Cada uno ocupa disco, y cada alta o modificación tiene que actualizar también los índices, así que las escrituras se vuelven más lentas. El oficio está en elegirlos a partir de las consultas que la app de verdad hace: las columnas por las que filtra, une y ordena. Cuando una página que cargaba al instante empieza a tardar segundos a medida que crecen los datos, el primer sospechoso es un índice que falta.

Para quedarse

Para seguir leyendo

Términos relacionados

Más de Datos