Création d'index incohérent
Bonjour à tous
J'utilise ORACLE 9i.
J'ai une table que je remplis avec un million de lignes. Sur cette table, je n'ai pas créé (encore d'index) ni fait d'analyse.
Je crée ensuite un index (sans analyse).
Lorsque j'exécute une requête devant prendre l'index (pas de doute possible), elle ne le prend pas.
Je supprime l'index puis le recrée (avec le même script), là, la requête prend l'index.
Petit détail : à aucun moment, je n'ai analysé la table ou l'index.
Je ne souhaite pas faire d'analyse des objets (je suis dans le cadre d'une étude qui cherche à valider l'intérêt d'une analyse systématique des objets).
Pourquoi le premier index n'est-il pas "correct" ?
Problème avec CHOOSE / RULE / ...
Je vois ce que tu veux me dire, mais j'ai (pardon) un peu de mal à tout saisir.
Lorsque j'exécute ma requête (select en jointure que ma table et sur une autre de 15 millions de lignes), j'ai le plan d'exécution suivant :
Operation Object Name Rows Bytes Cost Object Node In/Out PStart PStop
Citation:
SELECT STATEMENT Optimizer Mode=CHOOSE 522 K 13391
SORT ORDER BY 522 K 42 M 13391
MERGE JOIN 522 K 42 M 6320
SORT JOIN 14 M 576 M 42
PARTITION RANGE ALL 1 17
INDEX FULL SCAN HB_ETOIL_IN.IX_DWR_F_ELM_PASSAGE_TP_PK 14 M 576 M 42 1 17
SORT JOIN 840 K 34 M 6278
TABLE ACCESS FULL HB_ETOIL_IN.TT_F_ELM_PASSAGE_TP 840 K 34 M 2
La table incriminée est TT_F_ELM_PASSAGE_TP (1 millions de lignes).
L'explain plan indique bien que le mode est CHOOSE... d'où mon incompréhension:(