[MySQL] Plusieurs index sur plusieurs champs..

  • Auteur de la discussion Auteur de la discussion RomsIW
  • Date de début Date de début
WRInaute passionné
Bonjour à tous,

j'essaie un petit peu d'optimiser mes requêtes, notamment au niveau des index.

L'idée est que j'ai une table sur laquelle mes where vont tantôt taper sur un champ (C1), tantôt sur un autre (C2) => WHERE C1=qqchose OU WHERE C2=qqchose

Mais sur d'autres requêtes, le WHERE se fait sur les deux => WHERE C1=qqchose AND C2=qqchose

Que vaut-il mieux faire ?

Mettre un index séparé pour chacun des deux champs ?
Mettre un index commun pour ces deux champs ?
Mettre un index séparé pour chacun + un index commun ?

Merci de votre aide,

Rom's
 
WRInaute passionné
c'est ce que j'ai mais lorsque je fais un explain, il fait comme s'il n'y avait pas d'index.. :(
 
WRInaute passionné
Le mieux à mon avis est de faire deux indexes : l'un contenant les colonnes A et B et l'autre contenant uniquement B.

Ainsi ces indexes seront utilisés dans ces 3 cas :
- A utilisé seul
- B utilisé seul
- A et B utilisés simultanément

Toutefois l'optimiseur MySQL peut décider d'utiliser un index ou non selon le nombre d'enregistrements de la table ou encore le nombre de colonnes récupérées.
En gros quand MySQL pense que l'index n'apporte rien, il ne l'utilisera pas.


Un analyze table (inclus dans le optimize table) de temps en temps permet d'ailleurs à l'optimiseur de MySQL de mieux estimer ces cas.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut