- 締切済み
[materialized]マテリアライズドビューの作成
マテリアライズドビューを作成しましたら、 『複合問合せから高速リフレッシュ・マテリアライズド・ビューを作成できません。』とエラーが出てしまいました。 下記の様に、テーブルを作成し、Viewを作成した後、 マテリアライズド・ビューを作成しました。 Viewを作成するところまでは、現在のシステムの都合上、変更する事が出来ません。 ですので、もし、マテリアライズド・ビューを作成する箇所を修正し、 エラーを回避する方法を教えて下さい。 宜しくお願い致します。 ■テーブル1の作成 (1)Create table TEST_TBL1 ( Test1 nchar(6), Test2 nchar(6) ); ■テーブル2の作成 (2)Create table TEST_TBL2 ( Test1 nchar(6), Test2 nchar(6) ); ■ビューの作成 (3)create view TEST_VIEW(ID, TITLE) as select * from TEST_TBL1 union all select * from TEST_TBL2; ■マテリアライズドビューの作成 (4)create materialized view TEST_MVIEW REFRESH FAST ON DEMAND AS SELECT * FROM TEST_VIEW; ご回答の程、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
マニュアルの「UNION ALLを含むマテリアライズド・ビューの高速リフレッシュに関する制限」は読まれました? ・高速リフレッシュには、テーブル1、テーブル2にマテリアライズドビューログが必要ですので作成してください。 ・UNION ALLを行う場合、ROWIDとUNION ALLマーカーが必要です。 つまり、Viewは最低でもROWIDとマーカーの2項目が追加されてないとだめです。 ということで、ビューは変更できない質問者さんは、 ・高速リフレッシュはあきらめる ・ビューを経由するのはあきらめ、直接マテビューにUNION ALLを切る CREATE MATERIALIZED VIEW TEST_MVIEW REFESH FAST ON DEMAND AS SELECT 1 Mk,ROWID CRID,Test1,Test2 FROM TEST_TBL1 UNION ALL SELECT 2 Mk,ROWID CRID,Test1,Test2 FROM TEST_TBL2 ということになります。
お礼
いつもお世話になっております。 丁寧で分かり易いご回答に感謝しております。 ビューを変更しない場合、上記のどちらかという事になるのですね。 とても助かりました。本当にありがとうございました。 また、何かございましたら、何卒宜しくお願い致します。