Mejores prácticas para índices
Los índices no son decoraciones gratuitas. Demuestra cada uno con evidencia de la carga de trabajo.
Cómo usar esta lista
- Captura patrones de consulta de
pg_stat_statements. - Revisa los índices no utilizados trimestralmente.
A - Diseño
- Indexa predicados y claves de unión que realmente filtras. No todas las columnas.
- Haz coincidir el orden de las columnas múltiples con las consultas. Regla de la columna principal.
- Usa índices parciales para subconjuntos activos. Más pequeños y rápidos.
B - Validación
- EXPLAIN ANALYZE antes y después. Demuestra el beneficio.
- Comprueba la hinchazón de índices e índices inválidos. REINDEX cuando sea necesario.
- Elimina los índices
idx_scan = 0después de la ventana de observación. Documenta la eliminación en la migración.
C - Operaciones
- CREATE INDEX CONCURRENTLY en producción. Evita bloquear escrituras.
- Planifica
fillfactoren tablas con muchas actualizaciones. Reduce las divisiones de página. - Mantén
autovacuumsaludable para escaneos solo de índice. El mapa de visibilidad importa.
Preguntas frecuentes
¿Cuántos índices por tabla?
Tan pocos como sea posible cumpliendo el SLA; típicamente 3-8 para OLTP, dependiendo de las rutas de acceso.
Relacionado
- Índices B-tree - multicolumna
- Mejores prácticas de diseño de índices - ciclo de vida
Versiones de Stack: Esta página se escribió para PostgreSQL 18.4 (estable 18, mantenimiento 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x y PostGIS 3.5+.