[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で「IMP-00013: DBAのみ別のDBAがエクスポートしたファイルをインポートできます。」の解決法。

客先DBのエクスポートしたものがインポートできずに、タイトルのエラーを吐く。 幸い、お客さんの目の前じゃなかったので、ゆっくり調べて解決できたけど、客先で発生したら困るよなぁ・・・ もともと英語のメッ …

[ORACLE]IMPコマンドで、複数テーブルをインポートする

OracleでIMPコマンドでdumpファイルをインポートする時に、特定のテーブルだけインポートしたい時ってある。 後は、複数のテーブルを纏めてインポートする方法を説明します。 Oracleを使ってる …

[ORACLE]oracleのログの場所(リスナーログ、アラートログ)

ぶっちゃけ、ログの場所なんて普段意識してないわwww 存在は知ってるものの、ぶっちゃけ、普段からそんな場所など意識していたことがない。 もちろん、何かあったときは、ファイル検索で見つけりゃいいや~と思 …

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

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

[ORACLE]ORA-00918:列の定義が未確定です・・・のエラーにならなかった

なんでエラーになるものをマージしてるんだ? と、怒られました。 一瞬、理解が出来ず・・・ で、エラーを再現してもらう・・・と。 あっさり発生。 早く修正しろって突っ返されました。 頭には「?」しか浮か …


カテゴリー