Bonjour à tous,
J'ai la requête suivante :
1 2 3 4 5 6 7 8 9 10 11 12
| SELECT SQL_NO_CACHE sc.idspectacle
FROM schedules sc
JOIN contacts c ON c.idcontact=sc.idcontact
JOIN (spectacles s
JOIN typesspectacles ty ON ty.idtypespectacle=s.idtypespectacle
JOIN (text_spectacle ts
JOIN texts t ON t.idtext=ts.idtext)
ON ts.idspectacle=s.idspectacle
JOIN spectacle_person sp ON sp.idspectacle=s.idspectacle
JOIN spectacle_contact sct ON sct.idspectacle=s.idspectacle)
ON s.idspectacle=sc.idspectacle WHERE 1
ORDER BY sc.date DESC LIMIT 0,7; |
qui mets plusieurs secondes à s'executer (minimun 4 sec.)
Si je supprime la jointure :
JOIN spectacle_person sp ON sp.idspectacle=s.idspectacle
La requête ne met que quelques millisecondes
Ma table spectacle_person contient 3 champs :
idspectacle => integer 11 => index/FK
idperson => integer 11 => index/FK
idrole => smallint 5 => index/FK
la clé primaire est sur ces 3 champs.
Il y a 30000 enregistrements dans cette table. Mais la table schedules en a 100000
Avez-vous une idée de pourquoi la jointure ralenti autant la requête ?
En pièce jointe, l'explain de la requête.
Merci d'avance
Partager