【ORACLE】マテビューの元になるオブジェクト情報
マテビューのもとになるオブジェクト情報が「USER_MVIEW_DETAIL_RELATIONS」というシステム表?で見れる
例えばマテビューAの元オブジェクト情報が見たいときは
select DETAILOBJ_NAME,DETAILOBJ_TYPE from USER_MVIEW_DETAIL_RELATIONS WHERE MVIEW_NAME = 'A'
という感じ。結果として↓のように返ってくる。
DETAILOBJ_NAME | DETAILOBJ_TYPE |
---|---|
B | TABLE |
ただし経験則的には以下の点に課題がある。
1.複数テーブルから作成されているマテビューの場合は、レコードは返ってくるがDETAILOBJ_NAMEがNULLになる。
2.「マテビューのマテビュー」の場合はDETAILOBJ_TYPEが「TABLE」の行と「MATERIALIZED VIEW」の行が2行返ってくる
2.はともかく1.が結構厄介である。
明細のようにして全部返してくれりゃいうことないんだが。
まあ副問い合わせとかFunctionとか使ってゴチャゴチャしてるマテビューもあるだろうし、
判断するのも難しいそうだから仕方ない。
上記のような課題もあるので、比較的簡単・単純な構造のマテビューじゃない限り、
「USER_MVIEW_DETAIL_RELATIONS」を見ただけでは元オブジェクトの情報は判断できない。
厳密にはUSER_MVIEWS.QUERYを見るのが確実ということだろう。
ちょっとした情報を得るためだけならこれでも十分なので、そのメモとして残す。