Bonjour à tous,
J'ai une BDD avec une table qui contient à peu près une dizaine de millions de tuples, ces derniers représentent des statiques.
Si je veux des statiques sur une très longue période (par exemple depuis le début des mesures), MySQL devra effectuer un "Full Table Scan", bon encore là d'accord je comprend qu'il ait besoin de parcourir toute la table pour retrouver ces informations mais ça fait beaucoup ^^.
Cependant si je souhaite avoir juste les dernières statistiques (par exemple de la semaine en cours), je ne vois pas l'intérêt de parcourir la table en entier c'est une perte de temps et de ressources pour rien.
J'ai donc essayé de limiter au 1000 dernières entrées (en ne prenant que les 1000 derniers ID) avec une requête imbriquée de ''type'' LIMIT mais quand je regarde l'outil d'optimisation des requêtes de WorkBench il effectue quand même un Full Index Scan, sur lequel il fait un ORDER puis ensuite il parcourt la table entièrement (de 1000 lignes) pour faire un GROUP BY (bon encore 1000 lignes ça va c'est rapide mais voilà.).
Bref tout cela pour dire que je ne suis pas sur que cela soit très optimisé, ça fait un gros goulet d'étranglement alors que mes autres "critères de recherche" eux se base sur un "Unique Key Lookup".
Il y aurait-il un moyen de "filtrer" ma table pour avoir mes 1000 dernières entrées sans effectuer de parcours de la table entière?
Vous remerciant par avance pour votre réponse,
Cordialement,
FLIGHT'
Partager