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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
TABLE ACCESS BY INDEX ROWID Object name=A Cost=2 Cardinality=1 Bytes=35SELECT 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
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
Partager