je crée une vue de la vue matérialisée rapide. Il faut près de 45 minutes pour créer mais il n'a pas rafraîchi dans 24 heures. Je l'ai essayé avec index et sans index. Je vérifie le journal de tous les enregistrements de table Max dans la table de journaux est de 2 lac. La requête est comme sous s'il vous plaît suggérer quels changements nécessaires
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'
...
Votre matérialisation n'est pas définie avec un SUIVANT Clause, il ne sera donc rafraîchira que lorsque vous le demandez explicitement. Vous pouvez utiliser soit dbms_mview.refresh directement ou créer un groupe d'actualisation avec dbms_refresh .
Afin d'automatiser l'actualisation, vous pouvez programmer un travail avec DBMS_SCHEDULER ou DBMS_JOB (DBMS_JOB est obsolète en 11g).
Vous pouvez également définir votre MV avec une clause suivante, par exemple, cela rafraîchira le MV toutes les heures:
CREATE MATERIALIZED VIEW C_INFO
NOLOGGING
BUILD IMMEDIATE
refresh fast with rowid
on demand
NEXT sysdate + 1/24