Database.Middle.MaterializedView

A materialized view is a database object that stores the result of a query physically on disk—like a snapshot of data. Unlike regular views (which are virtual and recompute data on access), materialized views cache the results, making read queries much faster.


📌 Key Concepts

FeatureMaterialized View
Data storage✅ Stored on disk
Performance✅ Fast reads (no re-computation)
Freshness❌ May become stale unless refreshed
UpdatesManual or scheduled refresh needed
Use casesReporting, analytics, caching expensive joins/aggregates

🧠 How It’s Different from a Regular View

Regular ViewMaterialized View
DefinitionStored SQL queryStored query result
Query speedSlower (computed live)Faster (precomputed)
Data updatesAlways currentMust be refreshed

🧪 Example in PostgreSQL

1. Create a Materialized View

CREATE MATERIALIZED VIEW recent_orders AS
SELECT customer_id, COUNT(*) AS total_orders
FROM orders
WHERE order_date > CURRENT_DATE - INTERVAL '30 days'
GROUP BY customer_id;

Query it like a table

SELECT * FROM recent_orders;

Refresh the view (to update the data)

REFRESH MATERIALIZED VIEW recent_orders;

Optionally use WITH CONCURRENTLY (PostgreSQL) to avoid locking reads.

🐬 MySQL Support?

MySQL doesn’t support true materialized views, but you can simulate them using:

  • A normal table + triggers
  • A scheduled job (via EVENTs or cron + INSERT INTO ... SELECT)

🧰 Use Cases

  • Expensive joins or aggregations (e.g. daily reports)
  • Caching filtered subsets of large datasets
  • Improving read performance when real-time data isn’t needed

⚠️ Trade-offs

BenefitDrawback
Faster queriesNeeds manual/scheduled refresh
Reduces CPU loadUses disk space
Simplifies complex logicCan become stale
This entry was posted in Без рубрики. Bookmark the permalink.