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 :

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)
)
Voici mon index crée dans le premier champ :

CREATE INDEX idx_dimclient
ON dimclient(clientid)
J'ai vérifié que l'index est valide :

select index_name, status from user_indexes where index_name='IDX_DIMCLIENT'
Je fais la requête suivante :
select count(*) from dimclient
En regardant le plan d'execution, je suis en "table_access full" avec un "sort".
L'index n'est donc pas utilisé.
J'essaye donc de le forcer :

select /*+ index (DIMCLIENT IDX_DIMCLIENT) */ count(*) from dimclient
J'obtiens la même chose dans le plan d'execution. L'index n'est pas utilisé.

J'essaye donc une autre requête :

select c.clientid from dimclient c
Même résultat, je suis en "table_access full" sans le "SORT" cette fois ci.
L'index n'est également pas utilisé.

J'essayé de forcer avec le hint :

select /*+ index (DIMCLIENT IDX_DIMCLIENT) */ c.clientid from dimclient c
J'obtiens le même résultat l'index n'est toujours pas utilisé dans le plan d'execution

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.