Bonjour,
Afin de tester les performances, je n'arrive pas à faire utiliser mon index dans ma table. Celle-ci possède 190 000 lignes.
L'optimizer_mode est en mode 'CHOOSE'
Voici la structure de ma table :
Voici mon index crée dans le premier champ :CREATE TABLE DimClient
(
ClientID number(10),
Titre varchar2(8),
Prenom varchar2(50),
Nom varchar2(50),
Email varchar2(50),
Telephone varchar2(20),
Sexe char(1),
AdresseLigne1 varchar2(50),
AdresseLigne2 varchar2(50),
GeoID number(10)
)
J'ai vérifié que l'index est valide :CREATE INDEX idx_dimclient
ON dimclient(clientid)
Je fais la requête suivante :select index_name, status from user_indexes where index_name='IDX_DIMCLIENT'
En regardant le plan d'execution, je suis en "table_access full" avec un "sort".select count(*) from dimclient
L'index n'est donc pas utilisé.
J'essaye donc de le forcer :
J'obtiens la même chose dans le plan d'execution. L'index n'est pas utilisé.select /*+ index (DIMCLIENT IDX_DIMCLIENT) */ count(*) from dimclient
J'essaye donc une autre requête :
Même résultat, je suis en "table_access full" sans le "SORT" cette fois ci.select c.clientid from dimclient c
L'index n'est également pas utilisé.
J'essayé de forcer avec le hint :
J'obtiens le même résultat l'index n'est toujours pas utilisé dans le plan d'executionselect /*+ index (DIMCLIENT IDX_DIMCLIENT) */ c.clientid from dimclient c
Je n'arrive pas à comprendre pourquoi, pourtant avec 190 000 lignes dans la table, je pense que se serait plus rapide pour Orcle d'utiliser l'index. Mais même en forçant avec le hint, oracle ne l'utilise pas.
Quelqu'un aurait t'il une explication de ce qui se passe?
Je vous remercie par avance.
Partager