Prendre les 8 premiers resultats d'une requete.. - SQL/NoSQL - Programmation
Marsh Posté le 16-06-2006 à 19:58:44
au pifometre, je dirais que c'est nécessaire dans la mesure ou tu peux faire des requetes du genre "order by xxx limit n" qui seraient fausses si on évalue pas toute la requete avant le limit
Marsh Posté le 16-06-2006 à 20:02:52
Oui; j'en suis bien consciente.. mais pq mysql optimise pas mieux la chose; il sait pertinement que je n'ai pas mis d'order by..
Marsh Posté le 17-06-2006 à 10:11:09
dans la plupart des SGBD, une même requête de sélection (SELECT * FROM table) ramenera les tuples, mais pas forcement toujours dans le même ordre.
Donc afin de garantir que les 8 tuples recherchés, sont bien ceux que l'utilisateur attend, il est nécessaire à l'SGBD de faire la requête complètement et d'en extraire les 8 tuples après un ORDER BY précis sur l'ensemble. A mon avis, c'est l'une des raisons déjà, mais je suppose qu'il y en a d'autre... Pour MySQL je ne sais pas, mais c'est comme ça qu'Oracle par exemple travaille.
Marsh Posté le 16-06-2006 à 19:53:45
Bonjour,
Pourquoi; si je fais une requete du style:
SELECT * FROM table LIMIT 8,
Lorsque j'effectue un explain; je vois que la requete parcours toute la table ? Pourquoi diable ne s'arrete t'il pas aux 8 premieres entrées trouvées ?
Y'a une chose qui m'echappe..
merci