0Pricing
Advanced PostgreSQL: Indexing, Partitioning, Replication · Lección

Ajuste del coste de los índices con ANALYZE y estadísticas

Aprenda cómo el planificador de PostgreSQL utiliza las estadísticas de las tablas para elegir índices y cómo mantenerlas actualizadas para que los planes de consulta sigan siendo rápidos.

Ajuste del coste de los índices con ANALYZE y estadísticas es una lección gratuita de Advanced PostgreSQL: Indexing, Partitioning, Replication en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Advanced PostgreSQL: Indexing, Partitioning, Replication, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Advanced PostgreSQL: Indexing, Partitioning, Replication incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

The Planner Needs Data About Data

PostgreSQL's planner picks between index scans and sequential scans using statistics about your tables: row counts, value distributions, and more.

Stale statistics lead to bad plans.

What ANALYZE Does

The ANALYZE command samples a table and updates statistics stored in the system catalogs, so the planner estimates row counts accurately.

ANALYZE orders;

Autovacuum and Autoanalyze

The autovacuum daemon also runs ANALYZE automatically when enough rows change. But heavy bulk loads may need a manual ANALYZE right away.

Reading Estimates vs Actuals

Use EXPLAIN ANALYZE to compare the planner's estimated rows with actual rows. A big gap signals stale or insufficient statistics.

EXPLAIN ANALYZE SELECT * FROM orders WHERE status = 'paid';

Statistics Target

The default_statistics_target controls sample size. Raise it on columns with skewed data for sharper histograms.

ALTER TABLE orders ALTER COLUMN status SET STATISTICS 500;

Why Bad Estimates Hurt

If the planner underestimates matching rows it may pick an index scan that becomes slow; overestimate and it may skip a perfectly good index for a seq scan.

Inspecting pg_stats

The pg_stats view exposes the collected statistics like most common values and null fraction per column.

SELECT attname, n_distinct, null_frac FROM pg_stats WHERE tablename = 'orders';

Extended Statistics

For correlated columns, create extended statistics so the planner understands dependencies between them.

CREATE STATISTICS orders_corr (dependencies) ON city, zip FROM orders;

Cost Parameters

Settings like random_page_cost tell the planner how expensive random I/O is. On SSDs, lowering it makes index scans more attractive.

SET random_page_cost = 1.1;

When the Index Is Ignored

If an index exists but is unused, suspect:

  • Stale statistics
  • Low selectivity (most rows match)
  • A type mismatch preventing index use

A Tuning Workflow

  1. Run EXPLAIN ANALYZE
  2. Check estimate vs actual gap
  3. ANALYZE or raise statistics target
  4. Adjust cost settings if needed
  5. Re-measure

Quick Check

Test your statistics tuning knowledge.

Recap

The PostgreSQL planner chooses indexes based on statistics kept fresh by ANALYZE and autovacuum.

Compare estimated versus actual rows with EXPLAIN ANALYZE, raise the statistics target for skewed columns, add extended statistics for correlated ones, and tune cost parameters to guide index choice.

Preguntas frecuentes

¿La lección «Ajuste del coste de los índices con ANALYZE y estadísticas» es gratis?

Sí — el texto completo de «Ajuste del coste de los índices con ANALYZE y estadísticas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Advanced PostgreSQL: Indexing, Partitioning, Replication, actualiza a CoddyKit PRO. El curso de Advanced PostgreSQL: Indexing, Partitioning, Replication incluye 4 lecciones en total.

¿Qué aprenderé en «Ajuste del coste de los índices con ANALYZE y estadísticas»?

Aprenda cómo el planificador de PostgreSQL utiliza las estadísticas de las tablas para elegir índices y cómo mantenerlas actualizadas para que los planes de consulta sigan siendo rápidos. Practicas Advanced PostgreSQL: Indexing, Partitioning, Replication con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Advanced PostgreSQL: Indexing, Partitioning, Replication?

No se requiere experiencia previa. Advanced PostgreSQL: Indexing, Partitioning, Replication en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Ajuste del coste de los índices con ANALYZE y estadísticas»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Advanced PostgreSQL: Indexing, Partitioning, Replication?

Sí. Cada lección de Advanced PostgreSQL: Indexing, Partitioning, Replication incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Análisis de planes de consulta con EXPLAIN
  2. Supervisión del uso de índices
  3. Reindexación y mantenimiento de índices
  4. Ajuste del coste de los índices con ANALYZE y estadísticas
← Volver a Advanced PostgreSQL: Indexing, Partitioning, Replication