bg_image
header

Materialized View

A Materialized View is a special type of database object that stores the result of a SQL query physically on disk, unlike a regular view which is computed dynamically every time it’s queried.

Key Characteristics of a Materialized View:

  • Stored on disk: The result of the query is saved, not just the query definition.

  • Faster performance: Since the data is precomputed, queries against it are typically much faster.

  • Needs refreshing: Because the underlying data can change, a materialized view must be explicitly or automatically refreshed to stay up to date.

Comparison: View vs. Materialized View

Feature View Materialized View
Storage Only the query, no data stored Query and data are stored
Performance Slower for complex queries Faster, as results are precomputed
Freshness Always up to date Can become stale
Needs refresh No Yes (manually or automatically)

Example:

-- Creating a materialized view in PostgreSQL
CREATE MATERIALIZED VIEW top_customers AS
SELECT customer_id, SUM(order_total) AS total_spent
FROM orders
GROUP BY customer_id;

To refresh the data:

REFRESH MATERIALIZED VIEW top_customers;

When to use it?

  • For complex aggregations that are queried frequently

  • When performance is more important than real-time accuracy

  • In data warehouses or reporting systems


View

The View in Model-View-Controller (MVC)

The View is the presentation layer in the MVC architecture. It is responsible for displaying data from the Model in a user-friendly format.


Main Responsibilities of the View

Displaying Data: Shows information from the Model (e.g., a list of blog posts).
Reacting to User Interactions: Accepts user input and sends it to the Controller.
Formatting & Layout: Structures content using HTML, CSS, or templating engines (e.g., Laravel Blade or Twig).
Avoiding Business Logic: Contains only presentation logic, not data processing.


How Does the View Work in MVC?

  1. The user sends a request (e.g., "Show all blog posts").
  2. The Controller calls the Model to retrieve the data.
  3. The Model returns the required data.
  4. The View receives the data from the Controller and displays it.

Example: Blog System (View in Laravel Blade)

<!-- resources/views/blog/index.blade.php -->
@extends('layouts.app')

@section('content')
    <h1>Blog Posts</h1>
    @foreach ($posts as $post)
        <div>
            <h2>{{ $post->title }}</h2>
            <p>{{ $post->content }}</p>
        </div>
    @endforeach
@endsection

🔹 @foreach: Loops through the list of blog posts and displays them.
🔹 {{ $post->title }}: Outputs the title of the blog post.


Conclusion

✔ The View is responsible for presentation but does not process data.
✔ It ensures a clear separation between logic and display.
✔ Using templates or frontend technologies (e.g., Vue.js, React), the View can be dynamically rendered.