Database Reference
In-Depth Information
Code SQL ( suite )
Commentaire ( suite )
Création.de.la.vue.matérialisée.des.employés.
avec.une.contrainte. primary key .(colonne.clé.
primaire.de.la.table).
Rafraîchissement.incrémental.( fast ).après.
modifications.sur.la.table.
CREATE MATERIALIZED VIEW soutou.v_mat_employes
REFRESH FAST ON COMMIT
WITH PRIMARY KEY
AS SELECT
employee_id, irst_name, last_name,
email, hire_date, job_id,
salary, commission_pct, manager_id,
department_id
FROM hr.employees e;
Création.du.journal.des.opérations.qui.sera.vidé.
tous.les.5 jours.
CREATE MATERIALIZED VIEW LOG ON hr.departments d
WITH PRIMARY KEY, ROWID
PURGE REPEAT INTERVAL '5' DAY;
Création.de.la.vue.matérialisée.des.départements.
avec.une.contrainte. primary key .(colonne.clé.
primaire.de.la.table).
Rafraîchissement.incrémental,.première.
actualisation :.le.lendemain.à.11 h.puis.tous.les.
lundis.à.15 h.
CREATE MATERIALIZED VIEW soutou.v_mat_
departements
REFRESH FAST
START WITH ROUND(SYSDATE + 1) + 11/24
NEXT NEXT_DAY(TRUNC(SYSDATE),'LUNDI') + 15/24
WITH PRIMARY KEY
AS SELECT department_id, department_name,
manager_id, location_id
FROM hr.departments;
Les vues indexées ou matérialisées ne sont pas la panacée et doivent être abordées avec
circonspection…
Tout d'abord, la vue doit être déterministe , c'est-à-dire toujours fournir les mêmes résul-
tats si les tables sources ont les mêmes données, ce qui exclut l'appel à des fonctions
comme celles fournissant la date et l'heure courantes ou encore celles renvoyant des
données aléatoires ( RAND , GUID ou UUID …).
Il existe de nombreuses restrictions à l'écriture de vues synchrones. Comme les lignes
originelles doivent pourvoir être retrouvées, cela exclut certains opérateurs d'agréga-
tion autres que SUM , COUNT , MAX et MIN , les jointures externes, les sous-requêtes, les
valeurs non déinies ( NULL ), les opérations ensemblistes ( UNION , INTERSECT , EXCEPT ),
l'opérateur DISTINCT , les fonctions de fenêtrage, les groupages OLAP ( CUBE , ROLLUP ,
GROUPING ) et presque tous les opérateurs particuliers spéciiques à certains SGBDR.
Lorsque la vue contient des calculs mathématiques, il est important (mais pas impératif)
que les expressions intègrent des calculs précis , c'est-à-dire effectués sur des types SQL à
précision ixe, déinie et limitée. On devra alors utiliser du DECIMAL (ou NUMERIC ) ou des
entiers ( SMALLINT , INT , BIGINT ). En effet, l'emploi d'un type de données numériques à
 
Search WWH ::




Custom Search