M09L13Semana 4~5 h
L13 — Índices B-tree intro
~5.0 h · Semana 4
Un índice no es un logro: es una apuesta sobre lecturas vs escrituras.
Objetivo
Entender B-tree en la práctica y dejar un índice justificado por una query tuya.
Pasos
1. Lectura (50 min)
Elmasri (índices) + PG CREATE INDEX (solo B-tree por ahora).
2. Inventario actual (30 min)
SELECT indexname, indexdef
FROM pg_indexes
WHERE tablename = 'citas';
Compara con lo que ya creó 001_init.sql.
3. Elige una query lenta potencial (60 min)
Ej. filtrar por estado + rango de inicia_en. Diseña:
CREATE INDEX IF NOT EXISTS idx_citas_estado_inicia
ON citas (estado, inicia_en);
Ponlo en migrations/002_auditoria_y_indices.sql (o archivo nuevo) si aún no está.
4. Aplica y verifica (40 min)
psql "..." -f migrations/002_auditoria_y_indices.sql
psql "..." -c '\d citas'
5. Commit (15 min)
Lectura de esta lección
| Fuente | Qué leer | Enlace |
|---|---|---|
| Fundamentos de BD — Elmasri & Navathe (ed. ES) | Elmasri: índices; PG docs Indexes / CREATE INDEX | Tutorial PostgreSQL |
| Catálogo | Entrada de esta materia | Bibliografía · M09 |
Hecho cuando
Marca la lección solo si:
- Creas (o justificas) al menos un índice adicional alineado a un reporte.
- Documentas en
explain-notas.mdo migración por qué existe. - Commit.
Errores comunes
- Indexar todas las columnas.
- Índice único accidental que rompe inserts legítimos.
- No saber qué es B-tree vs “magia del motor”.