Oracle11g Release1 を使用しています。
マテビューを高速リフレッシュ可能にする場合、いくつかの決まりごとがありますが、なかなか高速更新が
可能な状態に出来なくて困っています。
1.元のテーブルにビュー・ログが必要
これは作成しました。
2.集計関数を使用している場合は、マテビュー内に「COUNT(*)」や「COUNT(AMOUNT)」などが必要
SUM関数だけの時は問題ないのですが、MAX関数があるとダメのようです。
3.UNION結合は使用できない
諦めました
4.副問合せは使用できない
WHERE句で別テーブルの値と同じものだけを抽出したいのですが、これもダメのようです。
5.複合問合せは使用できない
マテビュー内で元テーブルのコードとマスタの名称を持たせたいのですが、FROM句で2つ以上を
指定するとダメのようです。
いずれも「REFRESH FAST」とするとCREATEできない、或いは「dbms_mview.refresh」の
パラメータで「'f'」を指定して実行すると実行エラー(ORA-12004、ORA-06512)が発生します。
なお「REFRESH FORCE or COMPLETE」だとCREATEも実行も全く問題ありません。
上記の制約を外すだけ外したら何とか高速リフレッシュできるようにはなったのですが、
意図する構造を大きく断念せざるを得ない状況です。
データ量が数十万件もあって時間がかかるために高速リフレッシュに切替えたいのですが・・・
実際、データの変更部分はかなり少ないはずですので。
制約があって無理ならそれで諦めるしかないですが、詳しい情報が記載されているサイトなど
ありましたら教えていただけませんでしょうか。
宜しくお願いします。