Bonjour à tous !

Voici un schéma de données :

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
Chaque table a son index défini sur les colonnes ID* (id, idteam, idservice, etc)

Maintenant une requete, qui me parait simple. Je cherche tous les idteam uniques de la table employee dont l'idcompany est 42.


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;
Un explain de la requete sorti par mysql :

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 !