Saltar al contenido
Explorar conocimiento

concepto · intermedio · 2 min de lectura

Índices Secundarios

Un índice secundario es un índice adicional sobre columnas que no son la clave primaria, permitiendo consultas eficientes por otros criterios sin escanear toda la tabla.

No requiere conocimientos previos.

Alcance en breve

Cubre

  • Índices Secundarios as a concept

No cubre

  • implementation details

Supone

  • The reader understands relevant fundamentals.

Resumen

En una base de datos, la clave primaria tiene un índice implícito —encontrar una fila por su PK es O(log n)—. Pero si necesitás buscar por email, por fecha de creación o por status, necesitás índices adicionales sobre esas columnas: índices secundarios.

Cada índice secundario es una estructura separada que la base de datos mantiene actualizada. Las lecturas por ese campo se aceleran, pero las escrituras pagan el costo de mantener el índice —más inserts y updates lentos—.

Alcance y supuestos

Cubre índices secundarios en bases SQL y NoSQL, sus trade-offs y la diferencia con la clave primaria. Asume familiaridad con índices primarios.

Modelo mental

El índice por autor y el índice por título en una biblioteca. El índice principal —la clave primaria— es el número de inventario del libro. Pero también hay índices secundarios: «buscame todos los libros de Borges» usa el índice por autor. Sin ese índice, habría que revisar todos los estantes.

Uso práctico

  • ✅ Consultas frecuentes por campos que no son la clave primaria.
  • ❌ Tablas con muchas más escrituras que lecturas.

Ejemplo trabajado: MySQL secondary index

CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_created ON users(created_at);

Ahora WHERE email = ? y WHERE created_at > ? usan índices secundarios.

Evidencia

  • Todos los motores SQL soportan índices secundarios. DynamoDB los implementa como Global Secondary Indexes (GSI).

Fuentes citadas