Vue vs vue matérialisée en Oracle : quelle différence ?

Vue (toujours à jour, aucun stockage) vs vue matérialisée (résultat stocké, lecture rapide, à rafraîchir) : la différence en Oracle, avec exemples.

Comparatif vue vs vue matérialisée Oracle

Une vue est une requête enregistrée qui se ré-exécute à chaque appel (toujours à jour, aucun stockage) ; une vue matérialisée stocke physiquement le résultat (lecture ultra-rapide, mais à rafraîchir). Le choix se résume à un arbitrage : fraîcheur des données contre performance. Voici la comparaison détaillée.

Publicité

Tableau comparatif

Vue (VIEW)Vue matérialisée (MATERIALIZED VIEW)
Stockage des données❌ aucun (requête seulement)✅ résultat stocké sur disque
FraîcheurToujours à jourDatée du dernier rafraîchissement
Vitesse de lecture= coût de la requêteTrès rapide (pré-calculé)
RafraîchissementInutileManuel ou automatique
Usage typeSimplifier/sécuriser l’accèsReporting, agrégats lourds

La vue : une requête réutilisable

CREATE VIEW v_clients_actifs AS
SELECT id, nom, ville FROM clients WHERE actif = 'O';

SELECT * FROM v_clients_actifs;  -- ré-exécute la requête sous-jacente

La vue ne stocke rien : elle est toujours à jour car elle interroge les tables en direct. Idéale pour simplifier des requêtes complexes ou restreindre l’accès à certaines colonnes/lignes. Détails dans notre tutoriel VIEW Oracle.

La vue matérialisée : un résultat pré-calculé

CREATE MATERIALIZED VIEW mv_ca_mensuel
REFRESH COMPLETE ON DEMAND
AS
SELECT TRUNC(date_vente,'MM') AS mois, SUM(montant) AS ca
FROM ventes GROUP BY TRUNC(date_vente,'MM');

SELECT * FROM mv_ca_mensuel;  -- lit le résultat déjà calculé (rapide)

Le résultat est stocké : la lecture est quasi instantanée, parfaite pour un tableau de bord qui agrège des millions de lignes. Le prix à payer : les données reflètent le dernier rafraîchissement. Voir MATERIALIZED VIEW Oracle.

Rafraîchir une vue matérialisée

-- manuel
EXEC DBMS_MVIEW.REFRESH('MV_CA_MENSUEL');

-- automatique toutes les heures
CREATE MATERIALIZED VIEW mv_ca_mensuel
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE + 1/24
AS SELECT ...;

Modes : COMPLETE (recalcul total) ou FAST (incrémental, nécessite un materialized view log). ON COMMIT rafraîchit dès qu’une transaction modifie les tables sources.

Quand choisir quoi ?

  • Données qui doivent être en temps réel (transactionnel) → vue.
  • Agrégats lourds consultés souvent, fraîcheur de quelques minutes/heures acceptable → vue matérialisée.
  • Simplifier ou sécuriser une requête (sans enjeu de perf) → vue.

FAQ

Une vue stocke-t-elle des données ?

Non : une vue classique ne stocke que la définition de la requête. Seule la vue matérialisée stocke physiquement le résultat.

La vue matérialisée se met-elle à jour automatiquement ?

Seulement si vous le configurez (ON COMMIT, START WITH/NEXT, ou un job). Sinon, ses données restent figées jusqu’au prochain rafraîchissement.

Une vue ralentit-elle les requêtes ?

Une vue n’ajoute pas de coût en soi : elle exécute sa requête sous-jacente. Si celle-ci est lente, la vue l’est aussi — d’où l’intérêt de la vue matérialisée pour les gros agrégats.

Un nouveau tutoriel SQL par semaine

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

Publicité

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Cours SQL & Oracle — 100% gratuitVoir les cours →