ORACLE マテリアライズドビューメモ


権限
grant create materialized view to ユーザ名;

クエリーリライト
alter system set QUERY_REWRITE_ENABLED = true;

作成
create materialized view MVIEW名 refresh リフレッシュタイプ リフレッシュモード 
     as select文

リフレッシュタイプ 
 complete 完全リフレッシュ。
 マテリアライズド・ビュー内の全データを削除後、新規挿入する。
 
 fast 高速リフレッシュ
 元表に更新が発生した場合、更新分データのみリフレッシュする。 

 force デフォルト
  fast が不可能であった場合、complete を実施 

高速リフレッシュ fast リフレッシュモード 
 on commit 自動更新 
 on demand 手動更新 

完全リフレッシュでMVIEW作成
create materialized view MVIEW名 refresh complete
     as select 列名,列名   from 元表;


高速リフレッシュでMVIEW作成
create materialized view mv_emp refresh fast
as select 列名,列名, count(*) cnt_all
    from 元表  group by ...;

MVIEW_LOG作成(高速リフレッシュ使用時には必須)
create materialized view log on 元表;

MVIEW_LOG作成(MVIEWに集計関数を使用する場合)
create materialized view log on 元表 with sequence, rowid( 列名 )
    including new values;

完全リフレッシュ
exec dbms_mview.refresh( 'MVIEW名', c );

高速リフレッシュ
exec dbms_mview.refresh( 'MVIEW名' );

マテリアライズドビューの削除 
drop materialized view ビュー名

マテリアライズドビューのエラー参照 
exec dbms_mview.explain_mview('MVIEW名');


10g
マテリアライズドビュー作成SQLの出力(MVIEW_LOG作成のSQLなど)
DBMS_ADVISOR.TUNE_MVIEW( x, 'CREATE MATERIALIZED VIEW  mview名 AS select文 ');
DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT(x), 'ディレクトリー名', '作成ファイル名');
 * xには同じ文字を使用

MVIEW_LOG メモ
MVログのテーブル(MLOG$テーブル名)には索引がなく必ずFULLSCANする。

[一つ前に戻る] TOP PAGE
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送