-
Vue indexée
Bonjour,
je suis nouveau dans le monde oracle, et pour les besoins de modélisation d'une base je me demandais si on pouvait créer des vues qui seraient indexées.
Un peu comme dans sql server (elles y existent avec une très forte contrainte d'intégrité).
J'ai trouvé ce poste qui répond en partie à ma question. En disant que les vues utilisent les index des tables sur lesquelles elles sont basées.
Ce que je voudrais savoir, c'est si on peut directement créer un index sur une vue.
Merci d'avance de vos réponses.....
Krest.
Ps ne me demandez pas pour qu'elle version d'oracle c'est je ne le sais pas encore ........
-
La vue n'est qu'une représentation de la table ou des tables sous-jacentes. L'index sera donc créé sur la table qi constitue la vue.
N'oubliez pas qu'une vue n'est qu'un ordre select stocké.
-
J'imagine que ton problème c'est que tu veux que ta vue fasse une opération sur une donnée (concaténation, decode, substr) et que tu as peur que les index ne fonctionnent pas.
Tu devras alors faire sur ta table un index basé sur la fonction que tu appliques (vers >= 9i seulement)
Si par contre ton besoin c'est de faire un truc du genre :
Code:
CREATE VIEW AS Select T1.Champ1||' - '||T2.Champ2 from T1, T2 where T1.cle=T2.cle
Et que tu voudrais pouvoir utiliser un index sur T1.Champ1||' - '||T2.Champ2 alors je crois que ce n'est pas possible avec une vue simple, il faudrait peut-être utiliser une vue matérialisée ou une table qui réunirait les 2 valeurs, selon la version d'Oracle utilisée.
-
Salut,
Merci pour les réponses.
En recherchant ce qu'était une vue materialisée (je connaissais pas) je pense que c'est ce que je vais utiliser.
Par contre je me pose une autre question : qu'elle est la différence entre une vue materialisée et un table? A part le fait que la vue peut-être recalculée régulièrement...
Krest
-
A peu près la même différence entre une table et une vue.
Une vue peut être multi-sources et filtrante.
-
Est-ce qu'il n'y a pas tout un tas de chose qu'on peut faire pour une table et qu'on ne peut pas faire pour une vue matérialisée ? Genre une table tu peux insérer / updater / supprimer dedans de façon directe et simple, une vue matérialisée, est-ce que tu peux ?
-
Effectivement, on ne peut pas insérer directement dans une VM. il faut la raffraîchir.
-
Merci pour vos réponses. Je pense queje me servirai d'une VM
krest