Salut à tous
J'ai une petite question concernant l'utilisation d'index dans mes tables....
Je dispose d'une table "Central" qui dispose de 6 attributs (a,b,c,d,e,f), la clé primaire de cette table est le triplet (a,b,c) car c'est le seul truc d'unique dans la table... (a,d et e du type int et b,c Varchar(40) et f decimal(4,3).
J'ai une autre table "seuil" disposant de 15 attributs dont "a" comme clé primaire (donc ici unique) du type int ainsi qu' un attribut "pourcent" du type decimal.
voici le type de requête que je fais :
Ma table "Central" à 500 000 000 enregistrements, la table "seuil" en a 500.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT Central.b, Central.c, Central.a FROM Central INNER JOIN seuil USING (a) WHERE (Central.b = '$id' OR Central.c = '$id') AND seuil.a = Central.a seuil.pourcent < Central.f
Les questions sont:
- Est ce que je dois rajouté des indexs sur "a","b" et "c" dans ma table "Central" pour accelérer les requêtes ?? (sachant que chacun de ces attributs n'est pas unique) Le seul index de la table actuel est le triplet (a,b,c) --> clé primaire
- où utiliser les index au mieux ?
- si je veux interroger ma table par la requête suivante, dois je mettre des index sur d et e ? :
Je vous remercie pour vos précisions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT Central.d, Central.e, Central.a FROM Central INNER JOIN seuil USING (a) WHERE (Central.d = '$id' OR Central.e = '$id') AND seuil.a = Central.a seuil.pourcent < Central.f
P.S: mes tables MySQL sont du type MyISAM
mysql Ver 14.7 Distrib 4.1.12, for redhat-linux-gnu (i386) using readline 4.3
Partager