Bonjour à tous !
Voici un schéma de données :
Chaque table a son index défini sur les colonnes ID* (id, idteam, idservice, etc)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 [employee] -- count : 384398 - id - idteam - sinceDate - idservice [service] -- count : 605 - id - idcompany [company] -- count : 128 - id
Maintenant une requete, qui me parait simple. Je cherche tous les idteam uniques de la table employee dont l'idcompany est 42.
Un explain de la requete sorti par mysql :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select E.idteam, min(E.sinceDate) from employee E left join service S on (E.idservice = S.id) where S.idcompany = 42 group by 1 order by 2;
table S : key idcompany, rows 108. using where temporary filesort.
table E : key service.id, rows 439. using where.
Ma requete met 28 secondes à s'exécuter, et ce à chaque fois, même le cache ne la garde pas.
Est-ce que quelqu'un aurait une suggestion ? Des variables mysql à optimiser ? Les tables sont en innoDB.
Merci infiniment !
Partager