Je suis d'accord avec Lalystar.J'en suis de plus en plus persuadé : cet index sur txCptNom n'est pas utile car il rammène plus de 80% de la table. Il faut l'étendre aux deux autres colonnes pour qu'il soit utile au moins pour cette requête.
Pour Fadace, le mieux est de faire un :
Comme cela, tu vois le nombre d'occurrences et de valeurs distinctes rencontrées dans la table. Tu vois quelles sont les colonnes à faible ou forte cardinalité, et tu peux ainsi choisir tes colonnes pour créer l'index composite le plus sélectif possible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part select count (*), count (distinct cdoldcai), count (distinct nboldval), count (distinct txcptnom) from gfucvtp ;
Ce qui est un peu embêtant dans ton modéle, c'est le fait d'avoir NoAss de la table FUSASS en CHAR(6), alors que le champ nbOldVal de la table GFUCVTP est un NUMBER, d'où l'utilisation du TO_CHAR. Mais bon, peut on y remédier ?
N'oublie en final d'avoir :
- une table sans ligne chaînée (hier, je t'avais demandé de regarder FUSASS, car cela ralentit l'Update), mais regarde aussi GFUCVTP (car si tu as des lignes chaînées, le SELECT de la requête imbriquée est long lui aussi),
- les bons index, aussi sélectifs que possible,
- d'avoir les statistiques à jour et que ton optimiseur Oracle fonctionne en mode CBO.
Partager