Requete group by et index sur fonction
Salut à tous,
J'ai la requete suivante qui retourne des doublons d'utilisateurs :
Code:
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:
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:
1 2
| select /*+ index(utilisateur idx_utilisateur_nom idx_utilisateur_prenom) */
... |
Mais rien à faire, elle toujours aussi lente !
Quelqu'un pourrait-il m'aider ?