3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

データベースの View と Materialized View の違いを説明できる??

Last updated at Posted at 2024-03-12

みなさんは、View と Materialized Viewの違いはご存知でしょうか。

私は、Viewといえば仮想的なテーブル?のイメージでいましたが具体的に何が違うのか理解できていなかったのでここにメモとして残したいと思います。

View(ビュー)とは

まず、前提となるViewとはなんだったのかの確認からしていきましょう。

View(ビュー)とは、複数のテーブルからデータを取得し一時的に作成した仮想的なテーブルのこと

postgreSQLでは、以下のコマンドで実行できる。

-- Viewを作成する
CREATE VIEW ビュー名 AS SELECT...;

-- Viewを削除する
DROP VIEW ビュー名;
  • メリット
    • クエリをシンプルにできる
    • 容量を圧迫しない。
      • レコードは保存せずに使用するSELECT文を保存しているため。
  • デメリット
    • パフォーマンスが劣化する可能性がある
      • データ量が多い場合や複雑なクエリの場合にはパフォーマンスが低下する可能性がある

Materialized View(マテリアライズドビュー)とは

Materialized View(マテリアライズドビュー)とは、Viewと同じく複数のテーブルからテーブルを作成する。

ただし、仮想ではなく実体化されたビューであり実データを保持する。

postgreSQLでは、以下のコマンドで実行できる。

-- Materialized Viewを作成する
CREATE MATERIALIZED VIEW ビュー名 AS SELECT...;

-- 最新のデータで作成する
REFRESH MATERIALIZED VIEW ビュー名;
  • メリット
    • パフォーマンスが改善できる
      • 主キーやindexが定義できる
  • デメリット
    • リフレッシュが必要
      • 仮想的なビューと違い使用している表のレコードと食い違ってくる
      • そのため、定期的なリフレッシュが必要
    • 普通のテーブル同様に容量を圧迫する

まとめ

Viewの使い所

Viewは、最新のデータをリアルタイムで反映できますが、パフォーマンスが低下する可能性がある。
更新がおこなわれやすいテーブルや複雑なクエリを単純化したいときなどに適している。

Materialized Viewの使い所

Materialized Viewは、読み込みのパフォーマンスは速度が早くハイパフォーマンスが見込めるが、データの更新が多いテーブルには不向きである。
更新があまりおこなない、または最新のデータを必要としない場合やViewではパフォーマンスに問題がある場合などに適している。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?