Choix d' index pour une table mysql

Nouveau WRInaute
Bonjour,

Les index sur les tables mysql ne sont pas encore très clairs dans ma tête, j'aurai aimé avoir vos conseils pour le choix d'index.

J'ai une base de photo avec des champs :

numero d'image (int) (primary key)
rubrique (varchar)
sous rubrique (varchar)
titre d'image (varchar)
text d'image (text)
etc...

Je fais essentiellement des requettes pour :
- afficher des galeries d'images par rubrique ou sous rubrique
- pour afficher les images.


Pour optimiser mes requêtes pour les galeries, dois-je créer un index sur : rubrique et sous rubrique ou alors faut il que je mette les autres champs également (titre, texte, etc...) ?

Ou alors, dois je faire un index dédié aux requettes par rubriques et un index dédié au requêttes par sous rubriques ?

Pour optimiser mes requêtes pour les photos dois-je créer un index ? le numero d'image est déjà Primary Key.

Merci d'avance,
Pierre-Etienne
 
WRInaute occasionnel
Est-ce qu'il ne serait pas plus judicieux de stocker les rubriques et les sous rubriques dans deux tables externes... Cela pour deux raisons, d'une part tu as plus de chance de ne pas te tromper dans le nom de rubrique ou de sous rubrique, d'autre part, si un jour tu veux rajouter des champs à une rubrique ou une sous-rubrique, ce sera plus facile. La question que tu te poses est à combien de rubriques peut appartenir une sous-rubrique si c'est 1 tu peux mettres le numéro de rubrique dans la sous-rubrique, si c'est plus, il faut que tu crées une table intermédiaire où ta clef primaire sera l'ensemble num_rubrique, num_sous_rubrique.

pour les index, le mieux est que tu prennes donc rubrique et sous rubrique.
 
Nouveau WRInaute
Bonjour,

J'ai enfin trouvé le temps de plancher sur les index. Il est temps car j'ai vraiment dès problèmes de lenteur.
C'est la rédaction de ma requette qui n'est pas très claire.

J'ai créé un index : KEY `idx_galery` (`rubrique`,`sous_rubrique`)


Est ce que l'index idx_galery sera utilisé si j'écris en php ma requette ainsi :

SELECT * FROM tbl_photos WHERE rubrique = '".$var1."'

SELECT * FROM tbl_photos WHERE rubrique = '".$var1."' AND sous_rubrique = '".$var2."'


ou alors faut-il préciser dans la requette qu'il faut utiliser l'index ? Du genre :

SELECT * FROM tbl_photos WHERE idx_galery = '".$var1."'

SELECT * FROM tbl_photos WHERE idx_galery = '".$var1."' AND idx_galery = '".$var2."'

Merci d'avance pour votre aide. J'essaye de combler l'immensité de mes lacunes mais celà ne va pas très vite :-)
 
Discussions similaires
Haut