Vue matérialisée sous Oracle

Introduction

Oracle 9i propose une extension au LDD SQL pour créer explicitement des vues matérialisées plutôt que la gestion manuelle classique consistant à créer une table et à l'alimenter manuellement avec une requête de type INSERT.

Rappel

Une vue matérialisée est un stockage statique (dans une table) d'un résultat de requête. Il permet donc d'anticiper des requêtes complexes en pré-calculant tout ou partie du résultat.

Vues concrètes

SyntaxeDéclaration de vue matérialisée

1
CREATE MATERIALIZED VIEW nom_vue
2
 [PARTITION BY ...]
3
 BUILD IMMEDIATE -- quand la construire (alt. : DEFERED)
4
 REFRESH FORCE -- mode de rafraîchissement (alt. : COMPLETE, FAST) 
5
 ON DEMAND -- quand la rafraîchir (alt. : COMMIT)
6
 ENABLE QUERY REWRITE  -- utilisable pour l'optimisation automatique de requêtes (alt. : DISABLE)
7
 AS
8
 SELECT ...

SyntaxeRafraîchissement manuel de la vue

Si le rafraîchissement de la vue peut être programmé, il est néanmoins parfois nécessaire de procéder à un rafraîchissement manuel.

1
 EXECUTE dbms_mview.refresh('nom_vue');

Optimisation des requêtes

La déclaration d'une vue matérialisée dans Oracle, permettra à l'optimiseur de l'utiliser pour effectuer la requête correspondante plutôt que d'interroger les tables sources.

Attention

Oracle ne pourra pas toujours inférer automatiquement que des vues matérialisées sont utilisables à la place des tables originales. Il est donc nécessaire dans ce cas de réécrire soi-même les requêtes concernées. En pratique c'est souvent le cas si les vues sont complexes.

Raffraîchissement de la vue matérialisée

La déclaration d'une vue matérialisée sous Oracle 9i permet également de planifier automatiquement les modalités de rafraîchissement de la vue, plutôt que de devoir gérer un rafraîchissement uniquement manuel.

Remarque

Une vue matérialisée peut être indexée ou partitionnée comme toute table Oracle.