[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
-,

関連記事

no image

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

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

Oracleで「ORA-00918: 列の定義が不明瞭です 」のエラーの解決法と発生理由

発生したエラー ORA-00918: 列の定義が不明瞭です 原因 原因は、同じ列名やテーブルの別名を使用していること。 解決方法 Select句で羅列している列に同一の列名(別テーブル)があれば、as …

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

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

Oracle Database Bronzeの勉強を始めました。

業務でOracleを使ってます。 DBへの接続と簡単なSQLの確認ぐらいだったら、SQLDeveloperとかのツールを使わずにSQLPlusだけで済ませちゃう人も多いのかな? あとは、SQLのバッチ …

[ORACLE]今接続しているサーバー・スキーマとかを確認する

Oracle使ってる時に、今どのサーバーに繋いでるの?とか、今どのスキーマに繋いでるの? ってなるとき無いですか? そんなときの確認法。 今、どのサーバーに接続してるんだ? 先日の仮想マシンにOrac …


カテゴリー