[ORACLE]マテリアライズドビューの一覧を取得する

投稿日:


正直、使わなさ過ぎてマテリアライズドビューって何?って感じではあるけど、たまにフラット出てくるのでメモ。

詳細は、Oracleのリファレンス見てください。
https://docs.oracle.com/cd/E16338_01/server.112/b56311/statviews_1153.htm

マテリアライズドビューの一覧取得

ログインユーザの一覧取得

select *
from
  USER_MVIEWS
;

全ユーザの一覧取得

select *
from
  ALL_MVIEWS
;

マテリアライズドビューって何?

公式リファレンス見ても良く分からんw
https://docs.oracle.com/cd/E57425_01/121/REPLN/repmview.htm

要は、テーブルのコピーを作れる感じ?

後は、ビューとして取得するデータをテーブルとして持っておける。

で、元のテーブルが更新されたら、マテリアライズドビューも合せて更新されるから、基本的に最新のデータを保持するって感じか。
wikiだと、

クエリの結果を実際のテーブルにキャッシュする。キャッシュされたデータは元のテーブルが変更されるたびに更新される。そのため、最新でない状態を取得する可能性はあるが、効率的なアクセスが可能になる。特にデータウェアハウスでは実際のテーブルに対して頻繁にクエリを実行することは非常にコストが高いため、マテリアライズドビューが有効である。
さらに、マテリアライズドビューは実際のテーブルとして実体化されるため、実際のテーブルに対して適用可能な操作はすべてマテリアライズドビューにも適用できる。特にインデックスを定義できることはクエリにかかる時間を大幅に短縮する。通常のビューではベースとなるテーブルのインデックスのみが利用可能か、もしくは全く利用できない場合が多い。

って書いてあるし、ビューの取得でも時間がかかるものをキャッシュみたいな感じでテーブルに登録できるみたいですね。

しかも、実態はテーブルなので、インデックスを定義して検索時間の短縮とかに使えると。

 

まとめ

多分、大規模サイトとか構築するなら、必要になってくるんだろうなぁって感じで、今は漠然と理解した。

事の発端は、業務で仕様に関連するテーブルやらを調査しなきゃいけなくなったときに、明らかに社内の命名規則上ではビューなのに、テーブルとして登録されているやつがいたからでした。

SQLDeveloperで見ても、テーブルのフォルダに分類されてるので、本当にビューなのか?っていうところから、まず、ビューなのか、ビューじゃなければマテリアライズドビューじゃないのか?ってことで、確認方法を調べてみた。

中々いいのかもしれないけど、現時点の業務では使いどころが見当たらないやw







-ORACLE
-,

関連記事

何度だって引っかかるORACLEのエラー・・・。ORA-01008:バインドされていない変数があります。

今日も今日とて、ORA-01008のエラーに悩まされる。 無慈悲に「バインドされていない変数があります。」ってメッセージは出してくれるんだけど、ビンゴの位置は教えてくれないわけで・・・ 何度目だろう・ …

[ORACLE]ora-12638 資格証明の取出しに失敗しましたと表示される原因と対処法

客先で起こった内容。 状況 客先のdumpを取得するために、用意されているバッチファイルを実行した時に発生 ora-12638 資格情報の取出しに失敗しました バッチファイルの黒い画面で一瞬だけエラー …

OracleでLISTAGG関数を使ったけど、世界を変えられなかった話・・・

OracleでLISTAGG関数を使ったら、世界が変わった話。 はい、休日出勤でした。 そして、休日出勤の結果、以下のことが分かりました(泣 日本の中心付近で仕様変更と闘うSE日記OracleでLIS …

[ORACLE]統計更新を強制的にする

Oracleの統計情報の更新方法 頻度はそんなに無いというか、先日、トラブル対応時に必要に迫られたので・・・ 通常は、Oracleの統計情報は1日1回更新されるらしいんだけど、夜とかになるみたい。 多 …

no image

OracleでLISTAGG関数を使ったら、世界が変わった話。

11gR2からGROUP_CONCAT(複数行をまとめて1列に)が可能に http://d.hatena.ne.jp/kkz_tech/20150311/1426048592 日本の中心付近で仕様変更 …


カテゴリー