DB

マテリアライズドビューを作成してみた

マテリアライズドビューを利用すると、データベースでSELECTした結果をテーブルとして保持できるため、複雑な集計処理の高速化やデータ整合性の確保を簡単に実現しつつ、SELECT処理を効率的に行うことができる。

今回は、マテリアライズドビューの作成とデータのリフレッシュを実行してみたので、その手順を共有する。

なお、マテリアライズドビューの詳細については以下を参照のこと。
https://qiita.com/wanko5296/items/61c3e6ec4561b26beb5c

前提条件

下記記事の「接続用テーブルの作成とデータ追加」が完了していること

Spring BootでOracle接続処理を実装してみたSpring BootのWEBアプリケーションを開発する際、なんらかのデータベースにアクセスすることが多いが、SpringのJPAライブ...

やってみたこと

  1. マテリアライズドビューの作成
  2. マテリアライズドビューのリフレッシュ

マテリアライズドビューの作成

「user_data」テーブルのデータをそのまま抽出したマテリアライズドビュー「mv_user_data」を作成してみたので、その作成方法と確認内容を共有する。

1) 「user_data」テーブルに、以下のデータを投入しておく
マテリアライズドビューの作成_1

2) 下記SQLを実行し、マテリアライズドビュー「mv_user_data」を作成する

マテリアライズドビューの作成_2

3) マテリアライズドビュー「mv_user_data」のデータの中身を確認すると、以下のように、「user_data」テーブルと同じデータが投入されていることが確認できる。
マテリアライズドビューの作成_3

マテリアライズドビューのリフレッシュ

マテリアライズドビューの参照先テーブル(例:「user_data」テーブル)の変更内容を、マテリアライズドビュー(例:マテリアライズドビュー「mv_user_data」)に反映するには「リフレッシュ」という動作が必要になる。
ここでは、「user_data」テーブルにデータを1件追加した場合のリフレッシュ方法と確認内容を共有する。

1) 下記SQLを実行し、「user_data」テーブルにデータを1件追加する。

マテリアライズドビューのリフレッシュ_1

2) 「user_data」テーブルとのデータを確認すると、以下のように、追加したデータが表示されることが確認できる。
マテリアライズドビューのリフレッシュ_2

3) データを確認すると、リフレッシュはしていないので、マテリアライズドビュー「mv_user_data」にはデータが追加されていないことが確認できる。
マテリアライズドビューのリフレッシュ_3

4) 下記SQLを実行し、マテリアライズドビューのリフレッシュを行う。

マテリアライズドビューのリフレッシュ_4

5) データを確認すると、リフレッシュしたので、マテリアライズドビュー「mv_user_data」に、追加したデータが表示されていることが確認できる。
マテリアライズドビューのリフレッシュ_5

要点まとめ

  • マテリアライズドビューを利用すると、データベースでSELECTした結果をテーブルとして保持できる。
  • マテリアライズドビューの作成は、create materialized view文で作成できる。
  • マテリアライズドビューのリフレッシュは、dbms_mview.refresh(‘マテリアライズドビュー名’)で行える。