|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
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: Code :
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: Code :
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 |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Développeur C Inscription : août 2004 Messages : 1 460 ![]() |
Salut,
Peux-tu nous dire que ce que tu entends par "le dernier enregistrement qui a été fait sur ma table" Est ce : - le dernier ajout ? - le dernier modifié ? |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
|
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : février 2006 Messages : 953 ![]() |
Citation:
Je dirais juste que le "distinct" est de trop mais ça n'a pas l'air de déranger ici. Citation:
Bref d'après le explain ça a l'air pas mal. |
||
|
|
00
|
|
|
#5 | |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
Si, il faut lire l'enregistrement dans la table pour ensuite l'afficher. (Mais juste 1)
Citation:
Ce que j'ai remarqué, c'est que ça prenait beaucoup de temps pour que la page se charge(page php) lorsque je fait un tri par numéro d'id ou peut importe la colonne. Quand j'enlève le tri, le résultat s'affiche 10 fois plus rapidement que lorsque je passe par un tri. C'est normal je trouve, car sql va aller comparer élément par élément pour aller chercher le dernier enregistrement. Est-ce qu'il n'y aurai pas un autre moyen plus optimisé pour aller directement chercher le dernier enregistrement (le dernier ajout)? Merci |
|
|
|
00
|
|
|
#6 | ||
![]() ![]() |
A essayer :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#7 | |||||
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
Citation:
J'ai ajouté une clause where et une limit, car ce qui m'interesse c'est le livreid:666. Code :
Merci |
|||||
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2006 Messages : 190 ![]() |
J'ai essayé la commande suivante:
Code :
SELECT max(id) FROM livres WHERE livreid=666. Si je fait un group by, ca me retourne tous les éléments, ce que je veux éviter. Merci |
|
|
00
|
|
|
#9 | ||
![]() ![]() |
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com