Bonjour,

j'ai une requête SQL qui porte sur une colonne indexée:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE m2oequipement eq
SET eq.m2oCodeSup = 'SUP_INCO'
WHERE eq.sysClass = 'm2oModule'
Le résultat de cette requête porte sur environ 93% de la table, l'index n'est pas donc pas très discriminant.
Lorsque j'affiche le plan d'exécution, je vois qu'il exécute un FULL SCAN.

Lorsque j'affiche le plan d'exécution de la même requête mais avec une condition sur une valeur plus discriminante (6%):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
UPDATE m2oequipement eq
SET eq.m2oCodeSup = 'SUP_INCO'
WHERE eq.sysClass = 'm2oRepeteur'
Je vois qu'il fait un RANGE SCAN.

Est-ce qu'ORACLE décide ou non d'utiliser l'index pour sa requête en fonction du fait qu'il soit discriminant ou pas ?
Dans ce cas il va quand même interroger l'index au préalable ?

merci !