Avanzato18 min
SQL Avanzato e Ottimizzazione
Padroneggia window functions, CTE, subquery e tecniche di ottimizzazione per query su milioni di righe.
SQL Avanzato e Ottimizzazione
Quando i dataset crescono, le query base non bastano più. SQL avanzato ti dà strumenti per analisi complesse e performance ottimali.
Window Functions
Le window functions calcolano valori su un "finestra" di righe senza collassare il risultato:
sql
SELECT nome, reparto, stipendio,
RANK() OVER (PARTITION BY reparto ORDER BY stipendio DESC) as rank_reparto,
AVG(stipendio) OVER (PARTITION BY reparto) as media_reparto
FROM dipendenti;Ogni riga mantiene il proprio dettaglio, arricchita con calcoli aggregati.
CTE — Common Table Expressions
Le CTE rendono le query complesse leggibili:
sql
WITH vendite_mensili AS (
SELECT DATE_TRUNC('month', data) as mese, SUM(importo) as totale
FROM vendite
GROUP BY 1
),
trend AS (
SELECT mese, totale,
LAG(totale) OVER (ORDER BY mese) as mese_precedente
FROM vendite_mensili
)
SELECT mese, totale,
ROUND((totale - mese_precedente) / mese_precedente * 100, 1) as variazione_pct
FROM trend;Ottimizzazione query
- ●EXPLAIN ANALYZE — Leggi il piano di esecuzione prima di ottimizzare
- ●Indici — Crea indici sulle colonne usate in WHERE e JOIN
- ●Evita SELECT * — Seleziona solo le colonne necessarie
- ●LIMIT nelle subquery — Riduci i dati il prima possibile
Consiglio pratico
Una query lenta non si risolve con hardware più potente. Si risolve capendo come il database la esegue e riscrivendola di conseguenza.