Bonjour à tous,
Je souhaite optimiser ma requete sql en traitent et en affichant juste le dernier enregistrement qui a été fait sur ma table.
Données:
Ce qui m'interesse, c'est le dernier enregistrement, soit le livreid 666 avec l'auteur marc et ayant l'id 5.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 id livreid auteur 1 456 jules 2 232 pierre 3 666 gilbert 4 666 jules 5 666 marc 6 185 michel
En fait, j'ai 520 livreid portant le numéro 666,mais dans l'exemple j'ai limité à 3 pour faire simple.
Donc, au lieu de scaner tous les 520 enregistrements alors qu'il ya juste le dernier enregistrement qui m'interesse, j'ai décidé d'optimiser la requete en utilisant la commande mysql suivante:
SELECT distinct livreid FROM livres where livreid=666 ORDER BY id Desc limit 1
mais quand je fait un EXPLAIN:
je vois que sql traite tous mes 520 enregistrements pour examiner et en afficher juste un , ce que je trouve comme étant une perte de temps et une consomation de mémoire inutile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 id select_type table type possible_keys key key_len ref 1 SIMPLE livres ref livreid livreid 3 const rows Extra 520 Using index
Avez-vous une meilleure idée pour optimiser davantage le traitement, étant donné que je veux juste traiter et retourner juste un enregistrement.
Pour info: id et livreid sont indexés (id=Primary and livreid=index) .
Merci
Partager