Ottimizzare il costo degli indici con ANALYZE e le statistiche
Impari come il planner di PostgreSQL utilizzi le statistiche delle tabelle per scegliere gli indici e come mantenerle aggiornate affinché i piani di esecuzione delle query restino veloci.
Ottimizzare il costo degli indici con ANALYZE e le statistiche è una lezione Advanced PostgreSQL: Indexing, Partitioning, Replication gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Advanced PostgreSQL: Indexing, Partitioning, Replication, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Advanced PostgreSQL: Indexing, Partitioning, Replication include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
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.
Impara Advanced PostgreSQL: Indexing, Partitioning, Replication con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 11
- Lezioni
- 44
Domande Frequenti
La lezione «Ottimizzare il costo degli indici con ANALYZE e le statistiche» è gratuita?
Sì — il testo completo di «Ottimizzare il costo degli indici con ANALYZE e le statistiche» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Advanced PostgreSQL: Indexing, Partitioning, Replication, passa a CoddyKit PRO. Il corso Advanced PostgreSQL: Indexing, Partitioning, Replication include 4 lezioni in totale.
Cosa imparerò in «Ottimizzare il costo degli indici con ANALYZE e le statistiche»?
Impari come il planner di PostgreSQL utilizzi le statistiche delle tabelle per scegliere gli indici e come mantenerle aggiornate affinché i piani di esecuzione delle query restino veloci. Eserciti Advanced PostgreSQL: Indexing, Partitioning, Replication con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Advanced PostgreSQL: Indexing, Partitioning, Replication?
Non è richiesta alcuna esperienza precedente. Advanced PostgreSQL: Indexing, Partitioning, Replication su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Ottimizzare il costo degli indici con ANALYZE e le statistiche»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Advanced PostgreSQL: Indexing, Partitioning, Replication?
Sì. Ogni lezione Advanced PostgreSQL: Indexing, Partitioning, Replication include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Analisi dei piani delle query con EXPLAIN
- Monitoraggio dell'uso degli indici
- Ricostruzione e manutenzione degli indici
- Ottimizzare il costo degli indici con ANALYZE e le statistiche