Prendre les 8 premiers resultats d'une requete..

Prendre les 8 premiers resultats d'une requete.. - SQL/NoSQL - Programmation

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

Reply

Marsh Posté le 16-06-2006 à 19:53:45   

Reply

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

Reply

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.. :??:

Reply

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed