Salut à tous,

J'ai la requete suivante qui retourne des doublons d'utilisateurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
select max(uti_cod) code, upper(max(uti_nom)) nom, initcap(max(uti_pre)) prenom, substr(uti_dat_naissance, 7, 2) || '/' || substr(uti_dat_naissance, 5, 2) || '/' || substr(uti_dat_naissance, 1, 4) date_naissance, count(*) nb_doublon
from utilisateur
group by convert(upper(uti_nom), 'US7ASCII'), convert(upper(uti_pre), 'US7ASCII'), uti_dat_naissance
having count(*) >= 2
order by nom, prenom, date_naissance
... mais elle est très lente notamment à cause des converts.
Alors j'ai voulu créer des index sur les fonction convert :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
create index idx_utilisateur_nom on utilisateur(convert(upper(uti_nom), 'US7ASCII'))
 
create index idx_utilisateur_prenom on utilisateur(convert(upper(uti_pre), 'US7ASCII'))
A l'exécution les index ne sont pas utilisés alors j'ai ajouté le hint suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
select /*+ index(utilisateur idx_utilisateur_nom idx_utilisateur_prenom) */
...
Mais rien à faire, elle toujours aussi lente !

Quelqu'un pourrait-il m'aider ?