A Materialized View is a database object that stores the results of a query as a physical table, rather than recomputing those results each time the query is executed. Unlike a standard (virtual) view, which is just a stored SQL query recomputed on every access, a materialized view persists data on storage. This makes it a powerful optimization for repeated analytical workloads but introduces the challenge of keeping the stored results synchronized with the underlying base tables.

Materialized Views vs. Standard Views

Incremental Refresh

The key challenge with materialized views is refresh cost. Full refresh (recomputing from scratch) can be expensive for large tables. Incremental refresh (identifying and applying only the changes since the last refresh) is far more efficient but technically complex. Apache Iceberg's snapshot history enables efficient incremental refresh: by comparing the current snapshot to the snapshot at the last refresh, an engine can identify exactly which data changed and update only the affected rows in the materialized view.

Materialized Views in the Iceberg Lakehouse

The Apache Iceberg specification has included early materialized view definitions, and multiple engines are implementing full support. In Dremio, the equivalent concept is Data Reflections. In DuckDB and Trino, native SQL materialized view syntax is supported for Iceberg tables. The key advantage in an open lakehouse is that a materialized view created by one engine can be read by any other compatible engine, since it is stored as a standard Iceberg table.

Master the Agentic Lakehouse

Architecting an Apache Iceberg Lakehouse

Architecting an Apache Iceberg Lakehouse

Buy on Manning
The AI Lakehouse

The AI Lakehouse

Buy on Amazon