concepto · intermedio · 2 min de lectura
Índices de Base de Datos
Un índice de base de datos es una estructura auxiliar que acelera las consultas a cambio de overhead en escrituras y almacenamiento, como el índice alfabético de un libro.
No requiere conocimientos previos.
Alcance en breve
Cubre
- Índices as a concept
No cubre
- implementation details
Supone
- The reader understands relevant fundamentals.
Resumen
Un índice en una base de datos es una estructura de datos —típicamente un B-tree, hash o GIN— que permite encontrar filas sin recorrer la tabla completa. Sin índice, SELECT * FROM users WHERE email = 'ana@ejemplo.com' obliga al motor a leer cada fila —full table scan—. Con un índice sobre email, el motor encuentra la fila en O(log n).
Importa porque los índices son la herramienta más poderosa para optimizar consultas. Un índice bien puesto convierte una query de 30 segundos en una de 5 milisegundos. Pero no son gratis: cada índice ocupa espacio en disco y ralentiza las escrituras —cada INSERT, UPDATE, DELETE debe mantener el índice actualizado—.
Alcance y supuestos
Cubre índices en bases de datos relacionales, tipos comunes (B-tree, hash, GIN, GiST), y criterios para crearlos. Asume familiaridad con SQL.
Modelo mental
El índice alfabético de una enciclopedia. Si querés encontrar «ornitorrinco», no leés los 20 tomos. Vas al índice, encontrás «ornitorrinco: tomo 14, página 327», y vas directo. Un índice de base de datos hace exactamente eso.
Uso práctico
- ✅ Columnas usadas en WHERE, JOIN, ORDER BY frecuentemente.
- ❌ Columnas que cambian constantemente y rara vez se consultan.
Ejemplo trabajado: acelerar una búsqueda por email
Una tabla users con 10 millones de filas. La query SELECT * FROM users WHERE email = ? tarda 8 segundos —full scan—. Se crea CREATE INDEX idx_users_email ON users(email). La misma query ahora tarda 2 milisegundos —index seek—.
Evidencia
- Wikipedia, Database index cubre los tipos de índices y sus estructuras de datos subyacentes.
Fuentes citadas
- Wikipedia, Database index (Síntesis, 21-07-2026)