Bonjour,
Sous Oracle 11g, j'ai executé la même requête sur 2 tables avec une jointure.
J'aimerai connaitre votre avis sur le résultat dans le plan d'execution.
Table de dimension : dimclient (190 000 lignes)
Table de fait : Faitvente (1 000 000 lignes)
Index Bitmap de jointure créee entre les 2 tables sur les champs clientid :
1ère requête :CREATE BITMAP INDEX idx_faitvente_dimclient
ON faitvente (dimclient.clientid)
from faitvente, dimclient
where faitvente.clientid = dimclient.clientid
L'index sur DIMCLIENT est utilisé (la PK) mais l'index sur la table de fait n'est pas utilisé. (Table access full)explain plan set statement_id ='38' for
select quantite from faitvente,dimclient
where faitvente.clientid = dimclient.clientid
2e requête :
Je force l'utilisation de l'index de joniture bitmap avec un hint.explain plan set statement_id ='39' for
select /*+ INDEX_COMBINE (faitvente) STAR */ quantite from faitvente,dimclient
where faitvente.clientid = dimclient.clientid
Le résultat des 2 requêtes du plan d'execution est en pièce jointe.
Je constate que dans la colonne cost, IO cost et le time, la première requête est la plus avantageuse.
Pour les champs bytes et CPU_cost, c'est la 2e requête le plus avantageuse.
De manière générale, je dirais que l'index de jointure bitmap utilisé dans la 2e requête est moins performante.
J'aimerai connaître votre avis dessus, d'après vous laquelle de ces requête est la plus performante?
Merci
Partager