Comment optimiser cette simple jointure
Bonjour à tous !
Voici un schéma de données :
Code:
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:
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 !