Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/06/2007, 13h19   #1
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 137
Points : 26
Points : 26
Par défaut acces full sur table indexée ?

Bonjour


Oracle 9ir2
J’ai une requête de 2 tables A et B dont B est vide j’ai calculé les stats sur les 2 mais
Le plan d’exécution fait toujours un acces_full sur la table B malgré qu’il y ait un index sur cette table(b). voici ma requete :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  SELECT A.RCA_ID AS Rca_1d,
         A.RCA_2 AS Rc_2,
         A.RC3 AS RC3,        	       
         A.RC_4 AS RRC_4,
         A.RC_5 AS RRC_5
        FROM A  , B 
        WHERE 
              A.RCA_ID = B.RCA_ID (+)
              AND A.col1 = 1
              AND A.col2 = 1
              AND A.col3 = &pPosDate
              AND A.col4 = 'A'
              AND ROWNUM = 1         
              ORDER BY B.col_date DESC

Voici son plan d’execution:



Citation:
SELECT STATEMENT, GOAL = CHOOSE Cost=1985 Cardinality=1 Bytes=83
SORT ORDER BY Cost=1985 Cardinality=1 Bytes=83
COUNT STOPKEY
HASH JOIN OUTER Cost=1984 Cardinality=1 Bytes=83
TABLE ACCESS BY INDEX ROWID Object name=A Cost=2 Cardinality=1 Bytes=35
INDEX RANGE SCAN Object name=INN_A _col_1 Cost=2 Cardinality=1
TABLE ACCESS FULL Object name=B Cost=1982 Cardinality=1 Bytes=48


table A

(col1, col2, col3, col4) ---> index concatené table A

RCA_ID-----> pk indexée aussi

Table b

RRPP.col_date -----> index seul de la table b

Le problème il fait un acces full sur la table B malgré que l’index est crée

J’ai vérifié si l’index est ignoré dans les cas de conversion implicite ,valeur nulle, etc, mais c pas le cas ? pourriez vous m’orientez svp ? pour ne pas faire acces full sur B

Merci de votre aide
Mehdilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2007, 13h43   #2
Membre éprouvé
 
Avatar de chrifo
 
Inscription : juillet 2006
Messages : 445
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 445
Points : 418
Points : 418
Bonjour,
Vous accédez à la table B par RCA_ID, qui n'est pas indexé.
chrifo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2007, 16h09   #3
Nouveau Membre du Club
 
Inscription : août 2006
Messages : 137
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 137
Points : 26
Points : 26
Je vous remercie c ça le probleme!!!!
Mehdilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2007, 14h49   #4
Membre éclairé
 
Inscription : juin 2004
Messages : 487
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 487
Points : 373
Points : 373
le but de l'optimiseur n'et pas d'utiliser les index qur=e tu crée mais de trouver le plan d'execution le plus rapide.
Si ta table est vide, pourquoi utiliser un index pour la parcourir?
Si j'ai bien lu ton enoncé, je suis entièrement d'accord avec l'optimiseur!
aline est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h39.


 
 
 
 
Partenaires

Hébergement Web