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.
Syntaxe : Déclaration de vue matérialisée
CREATE MATERIALIZED VIEW nom_vue
[PARTITION BY ...]
BUILD IMMEDIATE -- quand la construire (alt. : DEFERED)
REFRESH FORCE -- mode de rafraîchissement (alt. : COMPLETE, FAST)
ON DEMAND -- quand la rafraîchir (alt. : COMMIT)
ENABLE QUERY REWRITE -- utilisable pour l'optimisation automatique de requêtes (alt. : DISABLE)
AS
SELECT ...
Syntaxe : Rafraî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.
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.