マテリアライズドビューを作成して高速リフレッシュします。作成には約45分かかりますが、24時間で更新されませんでした。インデックス付きとインデックスなしで試してみました。ログテーブルのすべてのテーブルの最大レコードのログが2 lacであることを確認します。クエリは次のとおりです必要な変更を提案してください
CREATE MATERIALIZED VIEW LOG ON a WITH ROWID, SEQUENCE (COLUMN USED FROM THIS TABLE)
/
CREATE MATERIALIZED VIEW LOG ON P WITH ROWID, SEQUENCE (COLUMN USED FROM THIS TABLE)
/
CREATE MATERIALIZED VIEW LOG ON PG WITH ROWID, SEQUENCE (COLUMN USED FROM THIS TABLE)
/
CREATE MATERIALIZED VIEW LOG ON PN WITH ROWID, SEQUENCE (COLUMN USED FROM THIS TABLE))
/
CREATE MATERIALIZED VIEW LOG ON AP WITH ROWID
/
CREATE MATERIALIZED VIEW C_INFO
NOLOGGING
BUILD IMMEDIATE
refresh fast with rowid
on demand
AS
SELECT
A.ROWID ACTROWID , P.ROWID PREMROWID,
PG.ROWID PGROWID,AP.ROWID APROWID, PN.ROWID PNROWID,
...
FROM A, P, pg, ap, pn
WHERE
p.id = pg.id (+)
and pg.columname (+)= 'Value'
...
マテリアライズは [〜#〜] next [〜#〜] 句で定義されていないため、明示的に要求した場合にのみ更新されます。 DBMS_MVIEW.REFRESH を直接使用するか、または DBMS_REFRESH でリフレッシュグループを作成できます。
更新を自動化するために、 DBMS_SCHEDULER または DBMS_JOB を使用してジョブをプログラムできます(dbms_jobは11gでは非推奨です)。
NEXT句を使用してMVを定義することもできます。たとえば、これはMVを1時間ごとに更新します。
CREATE MATERIALIZED VIEW C_INFO
NOLOGGING
BUILD IMMEDIATE
refresh fast with rowid
on demand
NEXT sysdate + 1/24