ビューとマテリアライズド・ビューの違い

目次

ビューとマテリアライズド・ビューの違いのまとめ

データ保存 クエリ速度 データ鮮度
ビュー なし(都度実行)
ストレージ不要
基になるテーブルに依存 常に最新
マテリアライズド・ビュー あり(結果を物理保存)
ストレージ必要
速い リフレッシュが必要

 

ビューを使うべき時

  • データが頻繁に更新され、常に最新の状態を見る必要がある。
  • 元のテーブルがそれほど大きくなく、検索パフォーマンスに問題がない。
  • 特定の列を隠すなど、セキュリティ的な窓口として使いたい。

 

マテリアライズド・ビューを使うべき時

  • 数千万件以上のデータを集計するような、重いクエリの結果を高速に返したい。
  • データがリアルタイムで最新である必要はない(例:1時間前のデータでも許容できる)。

ビューとは

ビューとは、SELECTクエリに名前をつけて保存したものです。

テーブルのように見えますが、実際のデータは保存されておらず、参照するたびにクエリが実行されます。

 

基本的な使い方

-- ビューの作成
CREATE VIEW active_users AS
SELECT
    user_id,
    user_name,
    email
FROM users
WHERE status = 'active';

-- ビューの参照(通常のテーブルと同じように使える)
SELECT * FROM active_users;

-- ビューの削除
DROP VIEW active_users;

8行目は、usersテーブルの中からstatus列の値がactiveである行だけを取得するという条件です。
不要なデータを隠すことができます。

 

特徴

クエリの簡略化 複雑なSQLをビューとして定義しておくことで、シンプルなSELECTで呼び出せる
セキュリティ 特定の列や行だけを見せるビューを作成し、元テーブルへのアクセスを制限できる
保守性 ビューを修正するだけで、そのビューを使う全クエリに変更が反映される

 

デメリット

基になるテーブル(基底テーブル)が巨大な場合や、複雑な結合(JOIN)が含まれる場合、実行のたびに計算が行われるため応答が遅くなる。

マテリアライズド・ビューとは

マテリアライズドビューとは、クエリの結果を物理的に保存したデータベースオブジェクトです。

通常のビュー(View)がクエリを毎回実行するのに対し、マテリアライズドビューは結果をあらかじめ計算・保存しておきます。

 

基本的な使い方

-- マテリアライズドビューの作成
CREATE MATERIALIZED VIEW sales_summary AS
SELECT
    product_id,
    SUM(amount) AS total_sales,
    COUNT(*) AS order_count
FROM orders
GROUP BY product_id;

-- クエリ(通常のテーブルと同じように使える)
SELECT * FROM sales_summary WHERE total_sales > 10000;

-- 手動リフレッシュ
REFRESH MATERIALIZED VIEW sales_summary;

 

特徴

高速なクエリパフォーマンス 集計・結合などの重い処理を事前に計算しておくため、クエリが大幅に速くなります。

 

デメリット

基になるテーブルが更新されても、マテリアライズド・ビュー側には自動で即時反映されない(リフレッシュ操作が必要)。そのため、データが古くなる可能性がある。

主要DBのビューとマテリアライズド・ビューの実装状況

項目 Redshift PostgreSQL MySQL Oracle
ビューの基本概念 同じ 同じ 同じ 同じ
マテリアライズドビュー ◯ あり ◯ あり ❌ なし ◯ あり
自動リフレッシュ ◯ あり ❌ なし ◯ あり
インクリメンタルリフレッシュ ◯ あり ❌ なし ◯ あり
自動クエリ書き換え ◯ あり ❌ なし ◯ あり

 

自動リフレッシュ

ベーステーブルのデータ変更を検知して自動的に更新します。

PostgreSQLは自動リフレッシュがないため手動で更新します。

 

インクリメンタルリフレッシュ

変更分だけを更新する差分リフレッシュに対応しており、全件再計算より効率的です。

 

自動クエリ書き換え(Automatic Query Rewriting)

マテリアライズドビューが存在する場合、元テーブルへのクエリを自動的にマテリアライズドビューへ書き換えてくれます(ユーザーが意識しなくてもOK)。

関連の記事

Oracleの概要と基本用語

△上に戻る