PostgreSQL: índices que realmente funcionan
Un índice es un compromiso
Cualquier índice acelera la lectura, pero ralentiza la escritura y ocupa espacio. Por eso los índices no se añaden por si acaso, sino para consultas concretas confirmadas por el plan de ejecución.
Leemos el plan de consulta
EXPLAIN ANALYZE muestra exactamente cómo ejecuta la base de datos una consulta: si usa un índice, si hace un escaneo secuencial, cuántas filas descarta. Es la principal herramienta para diagnosticar consultas lentas.
En qué fijarse en el plan
- Un Seq Scan en una tabla grande donde se esperaba un índice.
- Una gran diferencia entre la estimación y el número real de filas: estadísticas desactualizadas.
- Una ordenación costosa que un índice podría haber cubierto.
Elegimos el tipo de índice
B-tree es adecuado para igualdades y rangos y cubre la mayoría de los casos. GIN es indispensable para JSONB y la búsqueda de texto completo. Los índices parciales ahorran espacio al indexar solo el subconjunto necesario de filas, mientras que los índices de cobertura permiten responder a una consulta sin acceder a la tabla.
Errores frecuentes
Los índices duplicados, los índices sobre columnas con baja selectividad y el mantenimiento olvidado de las estadísticas son razones típicas de que los índices no ayuden. El análisis regular y la revisión de los índices según las consultas reales les devuelven su utilidad.
Conclusiones
La indexación eficaz es una disciplina de medición: miramos el plan, añadimos un índice puntual, comprobamos el resultado y eliminamos lo que no aporta beneficio.
Tecnologías
Etiquetas
Ruslan Ismailov
Desarrollador Senior Web / Backend. Desarrollador senior web/backend con 9 años de experiencia. Stack: PHP, Laravel, PostgreSQL, Redis, Docker, Kubernetes, REST, microservicios, CI/CD. Más sobre mí →