Bonjour,

Je me pose pas mal de questions sur les interactions entre les vues (matérialisées ou non) et les index oracle.

Mettons que l'on ait 2 tables : Personne et Activite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Table PERSONNE
ID_PERSONNE number(10)
NOM Varchar2(50)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Table ACTIVITE
ID_ACTIVITE number(10)
NOM Varchar2(50)
ID_MANAGER number(10) (FK sur l'ID_PERSONNE)
On souhaite une vue V_ACTIVITE qui intégre le nom en toute lettre du manager :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
CREATE OR REPLACE VIEW V_ACTIVITE (ID, ACTIVITE, MANAGER)
AS
SELECT ACTIVITE.ID_ACTIVITE, ACTIVITE.NOM, PERSONNE.NOM
FROM ACTIVITE, PERSONNE
WHERE ID_MANAGER=ID_PERSONNE
Ensuite, je veux chercher toutes les activité dont le manager est 'robert' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
select * from V_ACTIVITE where MANAGER='robert'
Tout ce blabla pour en venir à ma question :
Puis-je optimiser les perfs de cette recherche sur une vue en créant un index sur le nom du manager ?
Il n'est apparement pas possible de créer un index sur la vue elle-même mais est-ce que la vue "bénéficierait" d'un index sur le champ NOM de la table PERSONNE ?
Même question pour une vue matérialisée...

Merci d'avance de vos réponses...

Précisions : je suis en Oracle 10g