PostgreSQL: indici e performance delle query
Quando le query rallentano
Un'applicazione veloce puo trasformarsi in una lenta man mano che i dati crescono. Spesso la causa e la mancanza di indici adeguati. Capire come funzionano e il primo passo per query rapide.
Cos'e un indice
Un indice e una struttura dati (tipicamente un B-tree) che permette al database di trovare le righe senza scorrere l'intera tabella. E come l'indice analitico di un libro: evita di leggere tutte le pagine.
CREATE INDEX idx_letture_dispositivo_data
ON letture (dispositivo_id, registrata_il);
EXPLAIN: lo strumento essenziale
Per capire perche una query e lenta, si usa EXPLAIN ANALYZE, che mostra il piano di esecuzione reale:
EXPLAIN ANALYZE
SELECT * FROM letture
WHERE dispositivo_id = 7
AND registrata_il > now() - interval '1 day';
Se vedi un Seq Scan su una tabella grande dove ti aspetti un Index Scan, probabilmente manca un indice utile.
Attenzione agli eccessi
Gli indici non sono gratis: occupano spazio e rallentano le scritture, perche vanno aggiornati a ogni INSERT e UPDATE. Si creano sulle colonne usate in WHERE, JOIN e ORDER BY, non a casaccio.
Conclusione
Indici mirati e analisi dei piani di esecuzione fanno la differenza tra un database che regge e uno che cede. In MUSTNODE ottimizziamo le query partendo dai dati, non dalle supposizioni.
Articoli correlati
Altri approfondimenti dalla categoria Backend & Java.
Node.js Streams per gestire grandi volumi di dati
Come usare gli stream di Node.js per elaborare file e flussi di dati di grandi dimensioni senza saturare la memoria.
Java moderno: record, sealed e pattern matching
Le novita del Java recente che rendono il codice piu conciso ed espressivo: record, classi sealed e pattern matching su switch.
Costruire API REST con Spring Boot
Dai controller alla validazione, dalla gestione degli errori alla documentazione: come strutturiamo API REST solide con Spring Boot.