In informatica, una vista materializzata (calco dell'inglese materialized view) è un oggetto delle basi di dati che contiene i risultati di una interrogazione. Tipicamente una copia locale di dati situati altrove, o un sottoinsieme di righe e/o colonne di una tabella o il risultato di una unione (join), o una sintesi basata su aggregazione di dati di tabelle. Le viste materializzate che memorizzano dati basandosi su tabelle remote sono anche chiamate "snapshot" ovvero "istantanee". Un'istantanea può essere ridefinita come vista materializzata. Una vista materializzata per ottenere una performance migliore salva i dati su disco, a differenza delle viste semplici che sono puramente virtuali (non salvano nessun risultato su disco, tutto è contenuto in memoria).
Le viste materializzate sono state implementate per la prima volta da Oracle Database: dalla versione 8i.[1]
Sintassi d'esempio per creare viste materializzate in Oracle:
CREATE MATERIALIZED VIEW MV_MY_VIEW
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 1
AS SELECT * FROM <table_name>;
Le viste materializzate sono disponibili in PostgreSQL dalla versione 9.3.[2]
La sintassi utilizzata e':
CREATE MATERIALIZED VIEW table_name
[ (column_name [, ...] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) ]
[ TABLESPACE tablespace_name ]
AS query
[ WITH [ NO ] DATA ]
REFRESH MATERIALIZED VIEW;
Dalla versione 9.4 è disponibile il comando REFRESH MATERIALIZED VIEW CONCURRENTLY che consente di accedere alla vista materializzata anche durante l'aggiornamento.