Bases de datos

PostgreSQL: índices que realmente funcionan

Ruslan Ismailov Publicado Actualizado 11 min de lectura
P

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í →