index sur les champs d'une bdd

WRInaute accro
Salut ,

j'ai fais part de mon pb d'index sur certains champs sur le chat, malheureusement personne n'a su me répondre :)

quel "astuce" / comment faites vous pour savoir s'il faut mettre un index sur un champ ou plusieurs champs utilisés dans le cadre de REGROUPEMENTS et/ou de TRIS ?

je ne parle pas de clé primaire, étrangère, étrangère composée, etc..

merci :D
 
WRInaute passionné
c'est très simple, sur un select avec clause, les filtres s'appliquent de la première à la dernière

donc on indexe au moins les premiers champs selectionnés

et on passera en premier parametres les champs dont sa structure permet un filtre plus rapide et/ou le filtre elimine le plus d'éléments

rog
 
WRInaute occasionnel
rog : oui, c'est peut etre vrai avec la version courante de mysql (je n'en sais rien), mais rien ne prouve que ca le restera dans les versions prochaines.
les sgbd plus pro comme oracle (mais postgresql aussi je crois) utilisent ont un agent optimiseur que si charge de déterminer le plan de la requête, et donc quels indexes seront utilisés et quels autre champs seront parcourus en full scan.
cet optimiseur peut être influencé (hints) et même remplacé par un autre optimiseur par le programmeur.

En tous cas, ne pas rester sur l'idée que les champs sont parcourus dans l'ordre de la where clause...
 
WRInaute accro
merci nexxen, je vais voir ça.

je n'ai pas encore tout lu, mais s'il l'on ne met pas d'index le explain ne sert à rien si j'ai bien compris...il faut donc je pense en mettre partout dans un premier temps pour savoir sur lesquels il faudra en mettre finalement ?!
 
Discussions similaires
Haut