Vai al contenuto principale

View materializzate in PostgreSQL

Scopri come archiviare i risultati di una query con l'aiuto delle view materializzate in PostgreSQL.
Aggiornato 29 set 2026  · 6 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Se lavori molto con SQL (meglio ancora se usi PostgreSQL), o anche a un livello intermedio, per interrogare database, probabilmente avrai scritto un buon numero di query complesse per rispondere a domande cruciali. E capita anche che tu debba usare spesso i risultati di quelle query nel tuo lavoro. Eseguire più volte una query complessa può essere costoso. E se ci fosse un modo per mettere in cache i risultati di una query complessa per migliorare le prestazioni? Ebbene, ci sono le view materializzate.

Potresti pensare che esistano anche le semplici view che possono memorizzare il risultato di una query. Ma una view semplice differisce da una view materializzata sotto diversi aspetti. Ecco cosa dice la documentazione ufficiale di PostgreSQL sulle view semplici:

La view non è materializzata fisicamente. Invece, la query viene eseguita ogni volta che la view viene richiamata in una query.

Ciò significa che le view semplici non sono memorizzate fisicamente nel database. Ogni volta che una view viene usata in una query, viene eseguita la query che ha creato la view. Ed è proprio questo a renderle un po' inefficienti in termini di tempo di accesso.

Le view materializzate, invece, offrono molta flessibilità permettendoti di persistere fisicamente una view nel database. E puoi operare sulle view materializzate esattamente come fai con le view semplici (ma con un tempo di accesso inferiore). Nel resto di questo tutorial, vedrai le view materializzate in PostgreSQL. In uno dei suoi webinar, il Chief Data Scientist di DataCamp David Robinson ha mostrato come usa le view materializzate per archiviare in modo efficace i risultati di query complesse.

Nota: per seguire questo tutorial, dovresti avere familiarità con i contenuti trattati nel corso Unire i dati in SQL.

Configurazione iniziale del database

È meglio configurare un database in PostgreSQL e crearvi una tabella di base, così da poterla interrogare in modo efficace. Questo ti aiuterà anche nelle sezioni successive del tutorial. Puoi ripristinare questo backup del database, che contiene la tabella che userai in questo tutorial. Se vuoi imparare come ripristinare un backup del database in PostgreSQL, puoi seguire la prima sezione di questo tutorial.

Se sei riuscito a ripristinare il backup, dovresti vedere una tabella chiamata international_debt all'interno del database (dovrai prima creare un database, se non ne hai uno). Diamo rapidamente un'occhiata alle prime righe della tabella (una semplice select ti aiuterà a farlo) -

database

La tabella contiene informazioni sulle statistiche del debito di diversi paesi del mondo per l'anno in corso in varie categorie (vedi le colonne indicator_name, indicator_code). La colonna del debito mostra l'ammontare del debito (in USD) che un determinato paese ha in una specifica categoria. I dati appartengono al dominio dell'economia e sono spesso utilizzati per analizzare le condizioni economiche dei vari paesi. I dati sono stati raccolti dalla Banca Mondiale.

Ora che hai configurato correttamente un database, puoi passare alle sezioni successive di questo tutorial.

Creare view materializzate

Creiamo una view materializzata della seguente query:

select country_name,
sum(debt) as total_debt
from international_debt
group by country_name order by country_name;

La query restituisce i nomi dei paesi con il loro debito totale (in ordine alfabetico). L'output della query dovrebbe essere simile a questo:

Ora la view materializzata:

CREATE MATERIALIZED VIEW country_total_debt
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name;

Dovresti ricevere un messaggio di successo del tipo: Query returned successfully: 124 rows affected, 242 ms execution time.

Aggiornare una view materializzata

Puoi anche istruire PostgreSQL a non caricare alcun dato nella view materializzata mentre la crei specificando l'opzione WITH NO DATA:

CREATE MATERIALIZED VIEW country_total_debt_2
as
  select country_name,
  sum(debt) as total_debt
  from international_debt
  group by country_name order by country_name
WITH NO DATA;

Otterrai un messaggio che dice: Query returned successfully with no result in 41 ms. Nota la differenza tra i due messaggi di output. Se aggiungi l'opzione WITH NO DATA, viene creata una view materializzata vuota. Non puoi interrogare questa view materializzata. Tuttavia, puoi popolare la view materializzata eseguendo:

REFRESH MATERIALIZED VIEW country_total_debt_2;

Interrogare una view materializzata

A questo punto dovresti avere due view materializzate (country_total_debt, country_total_debt_2) create. Eseguiamo una semplice select usando una delle due:

select * from country_total_debt_2;

La query dovrebbe restituire qualcosa di simile a:

query

L'output è esattamente lo stesso della query che abbiamo racchiuso in una view materializzata. Puoi eseguire query sulle view materializzate anche con funzioni di aggregazione:

select max(total_debt) from country_total_debt_2;

Dovresti ottenere: output

Eliminare una view materializzata

Le view materializzate possono essere eliminate proprio come si eliminano le tabelle in PostgreSQL. Devi solo specificare Materialized View dopo Drop:

Drop Materialized View country_total_debt_2;

Per confrontare MySQL con il suo secondo concorrente più popolare, dai un'occhiata al nostro confronto approfondito PostgreSQL vs. MySQL.

Conclusione

Questo è tutto per il tutorial. Grazie per aver letto fino in fondo. In questo tutorial hai imparato cosa sono le view materializzate in PostgreSQL e come puoi operarci. Per la loro efficacia, le view materializzate sono ampiamente usate nei data warehouse. Se ti interessa imparare query più complesse, dai un'occhiata ai seguenti corsi di DataCamp:

Argomenti
SQL

Corsi SQL

Corso

Manipolazione dei dati in SQL

4 ore
337.8K
Padroneggia query SQL complesse per rispondere a varie domande di Data Science e preparare dataset solidi da analizzare in PostgreSQL.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro