Reviewed by Aditya Kumar · Last reviewed 2026-03-24
A view is a virtual table defined by a stored query, executed every time it's referenced, providing real time data without storing results. A materialized view, conversely, physically stores the pre…
This medium-level SQL question appears frequently in data engineering interviews at companies like Presidio, Swiggy. While less common, it tests deeper understanding that distinguishes strong candidates.
Break this problem into components. Identify the core trade-offs involved, then walk the interviewer through your reasoning step by step. Demonstrate awareness of edge cases and production considerations - this is what separates good answers from great ones. The expert answer includes a code example that demonstrates the implementation pattern.
A view is a virtual table defined by a stored query, executed every time it's referenced, providing real-time data without storing results. A materialized view, conversely, physically stores the pre-computed results of a query, offering significantly faster read performance at the cost of potential data staleness and increased storage.
The core trade-offs revolve around performance, data freshness, and resource cost. Views provide real-time data with zero storage but can be slow. MVs offer blazing-fast reads and reduce load on source systems, but require storage, compute for refreshes, and introduce data latency. For instance, a daily sales dashboard querying billions of raw transactions would be prohibitively slow with a view. An MV pre-aggregating SUM(amount) by sale_date would provide near-instant results, even if the data is a few hours old.
CREATE MATERIALIZED VIEW daily_sales_summary AS
SELECT
DATE_TRUNC('day', sale_timestamp) AS sale_date,
SUM(amount) AS total_sales
FROM
sales_transactions
GROUP BY
1;
In the interview, also mention how different systems handle MVs (e.g., Snowflake's automatic clustering and micro-partitioning for MVs, or dbt's materialized='view' vs. materialized='table' or incremental' strategies).
Red Flag: Creating MVs without a refresh strategy—stale data. Pro-Move: 'We use MVs for daily aggregates; incremental refresh where supported. We alert on refresh latency and staleness.'
Some links below are affiliate links. If you buy through them we may earn a small commission at no extra cost to you — it helps keep DataEngPrep free.
According to DataEngPrep.tech, this is one of the most frequently asked SQL interview questions, reported at 2 companies. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.