Index du Forum » » Le coin des codeurs

Auteur

Je sais qu'avec oracle, on peut selectionner un nombre d'enregistrement voulu avec numrow mais ça
allezletfc_net
5  

  Posté : 26-10-2003 09:53

j'ai trouvé ceci :

Dans certains cas, MySQL va gérer la requête différemment avec la clause LIMIT #, si la clause HAVING n'est pas utilisée :

Si vous ne sélectionnez que quelques lignes avec LIMIT, MySQL va utiliser les index dans certains cas, où il aurait préféré utiliser un scan de table complet.
Si vous utilisez LIMIT # avec la clause ORDER BY, MySQL va arrêter de trier dès qu'il a trouvé la première # au lieu de trier toute la table.
Lorsque vous combinez LIMIT # avec DISTINCT, MySQL va s'arrêter dès qu'il a trouvé # lignes distinctes.
Dans certains cas, la clause GROUP BY peut être appliquée en lisant les clés dans l'ordre (ou en faisant un tri sur la clé), puis en calculant un sommaire, jusqu'à ce que la clé soient modifiée. Dans ce cas, LIMIT # ne va pas appliquer les éléments non nécessaires de la clause GROUP BYs.
Aussitôt que MySQL a envoyé les premières # lignes au client, il annule le reste de la requête (si vous n'utilisez pas la fonction SQL_CALC_FOUND_ROWS).
LIMIT 0 va toujours retourner rapidement un résultat vide. C'est pratique pour vérifier une requête et lire les types de colonnes du résultat, sans exécuter réellement la requête.
Lorsque le serveur utilise des tables temporaire pour résoudre les requêtes, la clause LIMIT # est utilisée pour calculer l'espace nécessaire.


et donc
select * from lien limit 7 -> ça marche
select * from lien limit 7 order by id_lien desc -> marche
select * from lien limit 7 order by id_lien desc limit 0,30 -> marche pas non plus



Cet article provient de NPDS

http://www.npds.org/viewtopic.php?topic=8212&forum=5