Bonjour,
J'ai une requête sur deux tables (en fait plus que ça mais je vais simplifier) qui fait la chose suivante : on a une table d'historique de mouvements (entrées, sorties, etc.) et une table de produits. On veut chercher dans l'historique les produits selon un certain critère (critère se trouvant dans la fiche produit) mais trier le résultat par date (date de l'historique, en fait on utilise l'id de la table) puis renvoyer les 1000 premiers résultats (on ne veut pas remonter trop de lignes à l'appli). On a donc quelque chose comme ça :
En faisant un EXPLAIN, MySQL me dit "Using Filesort" et la requête est vraiment extrêmement longue. J'ai un index sur la famille, la référence et l'id. Que puis-je faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT * FROM historique H LEFT OUTER JOIN produit P USING (reference) WHERE P.famille = famille_choisie AND H.date between date_debut AND date_fin ORDER BY H.id DESC LIMIT 1000
Partager