Ajuste do custo dos índices com ANALYZE e estatísticas
Aprenda como o planejador do PostgreSQL usa estatísticas das tabelas para escolher índices e como mantê-las atualizadas para que os planos de consulta continuem rápidos.
Ajuste do custo dos índices com ANALYZE e estatísticas é uma aula grátis de Advanced PostgreSQL: Indexing, Partitioning, Replication no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Advanced PostgreSQL: Indexing, Partitioning, Replication, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Advanced PostgreSQL: Indexing, Partitioning, Replication inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em 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
- Run EXPLAIN ANALYZE
- Check estimate vs actual gap
- ANALYZE or raise statistics target
- Adjust cost settings if needed
- 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.
Perguntas Frequentes
A aula “Ajuste do custo dos índices com ANALYZE e estatísticas” é grátis?
Sim — o texto completo de “Ajuste do custo dos índices com ANALYZE e estatísticas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Advanced PostgreSQL: Indexing, Partitioning, Replication, atualize para CoddyKit PRO. O curso de Advanced PostgreSQL: Indexing, Partitioning, Replication inclui 4 aulas no total.
O que vou aprender em “Ajuste do custo dos índices com ANALYZE e estatísticas”?
Aprenda como o planejador do PostgreSQL usa estatísticas das tabelas para escolher índices e como mantê-las atualizadas para que os planos de consulta continuem rápidos. Você pratica Advanced PostgreSQL: Indexing, Partitioning, Replication com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Advanced PostgreSQL: Indexing, Partitioning, Replication?
Nenhuma experiência prévia é necessária. Advanced PostgreSQL: Indexing, Partitioning, Replication no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Ajuste do custo dos índices com ANALYZE e estatísticas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Advanced PostgreSQL: Indexing, Partitioning, Replication?
Sim. Cada aula de Advanced PostgreSQL: Indexing, Partitioning, Replication inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Analisando planos de consulta com EXPLAIN
- Monitoramento do uso de índices
- Reindexação e manutenção de índices
- Ajuste do custo dos índices com ANALYZE e estatísticas