Bonjour,

Je suis en Oracle 10GR2 et j'ai un souci que je vous expose ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
prod)>select * from CONTRAT partition (m200901) where NU_CONTRAT = '102795462';

Execution Plan
----------------------------------------------------------
          0
SELECT STATEMENT Optimizer=CHOOSE (Cost=11 Card=1 Bytes=308)
          1                  0
  PARTITION RANGE (SINGLE) (Cost=11 Card=1 Bytes=308)
          2                  1
    TABLE ACCESS (BY LOCAL INDEX ROWID) OF 'CONTRAT' (TABLE) (Cost=11 Card=1 Bytes=308)
          3                  2
      INDEX (SKIP SCAN) OF 'PK_CONTRAT' (INDEX (UNIQUE)) (Cost=10 Card=1)
La réponse en quasi-instannée
prod)>select * from CONTRAT partition (m200901) where nu_affa in ('112946548','102795462');

Execution Plan
----------------------------------------------------------
0
SELECT STATEMENT Optimizer=CHOOSE (Cost=44037 Card=2 Bytes=616)

1 0
PARTITION RANGE (SINGLE) (Cost=44037 Card=2 Bytes=616)

2 1
TABLE ACCESS (FULL) OF 'CONTRAT' (TABLE) (Cost=44037 Card=2 Bytes=616)
Ma table CONTRAT est partitionnée, les stats sur la partition sont bonnes.
Pourquoi dans un cas, l'optimiseur Oracle utilise l'index et pas dans l'autre.
Merci de vos réponses.
LBO72.