マテリアライズドビューを利用すると、データベースでSELECTした結果をテーブルとして保持できるため、複雑な集計処理の高速化やデータ整合性の確保を簡単に実現しつつ、SELECT処理を効率的に行うことができる。
今回は、マテリアライズドビューの作成とデータのリフレッシュを実行してみたので、その手順を共有する。
なお、マテリアライズドビューの詳細については以下を参照のこと。
https://qiita.com/wanko5296/items/61c3e6ec4561b26beb5c
前提条件
下記記事の「接続用テーブルの作成とデータ追加」が完了していること
やってみたこと
マテリアライズドビューの作成
「user_data」テーブルのデータをそのまま抽出したマテリアライズドビュー「mv_user_data」を作成してみたので、その作成方法と確認内容を共有する。
1) 「user_data」テーブルに、以下のデータを投入しておく
2) 下記SQLを実行し、マテリアライズドビュー「mv_user_data」を作成する
1 2 3 | create materialized view mv_user_data as select * from user_data; |
3) マテリアライズドビュー「mv_user_data」のデータの中身を確認すると、以下のように、「user_data」テーブルと同じデータが投入されていることが確認できる。
マテリアライズドビューのリフレッシュ
マテリアライズドビューの参照先テーブル(例:「user_data」テーブル)の変更内容を、マテリアライズドビュー(例:マテリアライズドビュー「mv_user_data」)に反映するには「リフレッシュ」という動作が必要になる。
ここでは、「user_data」テーブルにデータを1件追加した場合のリフレッシュ方法と確認内容を共有する。
1) 下記SQLを実行し、「user_data」テーブルにデータを1件追加する。
1 2 3 4 | insert into user_data (id, name, birth_year, birth_month, birth_day, sex, memo ) values (4, 'テスト プリン4', 2011, 6, 21, 1, 'MVIEW登録テスト'); commit; |
2) 「user_data」テーブルとのデータを確認すると、以下のように、追加したデータが表示されることが確認できる。
3) データを確認すると、リフレッシュはしていないので、マテリアライズドビュー「mv_user_data」にはデータが追加されていないことが確認できる。
4) 下記SQLを実行し、マテリアライズドビューのリフレッシュを行う。
1 | exec dbms_mview.refresh('mv_user_data'); |
5) データを確認すると、リフレッシュしたので、マテリアライズドビュー「mv_user_data」に、追加したデータが表示されていることが確認できる。
要点まとめ
- マテリアライズドビューを利用すると、データベースでSELECTした結果をテーブルとして保持できる。
- マテリアライズドビューの作成は、create materialized view文で作成できる。
- マテリアライズドビューのリフレッシュは、dbms_mview.refresh(‘マテリアライズドビュー名’)で行える。