Ca existe ce genre de commande ? : [MySQL] - PHP - Programmation
Marsh Posté le 05-11-2002 à 17:10:56
cleanx a écrit a écrit : Voilà j'ai ça :
|
$query = "SELECT nom,type,descrip,auteur,hauteur,largeur,taille FROM smiley_tbl WHERE type='stat' LIMIT 0,10";
affiche les 10 premier posts
$query = "SELECT nom,type,descrip,auteur,hauteur,largeur,taille FROM smiley_tbl WHERE type='stat' LIMIT 10,10";
affiche les 10 suivants
etc
Marsh Posté le 05-11-2002 à 17:14:48
'tain, pourtant j'ai épluché une bonne partie de la doc MySQL et j'ai jamais vu la commande LIMIT . En même temps ça me paraîssait impossible que ça n'existe pas.
Ben c'est clair que ça va être simple comme ça . Merci m'sieur grand schtroumpf.
Marsh Posté le 05-11-2002 à 18:14:25
beleg a écrit a écrit : tas jamais utilisé phpMyAdmin ? |
Ben oui je l'utilise pour gérer mes tables, mais je ne vois pas le rapport...
Marsh Posté le 05-11-2002 à 20:00:58
tu tes jamais apercu que l'affichage du contenu des tables était paginé avec LIMIT d'ailleurs
Marsh Posté le 05-11-2002 à 20:41:16
cleanx a écrit a écrit : En même temps ça me paraîssait impossible que ça n'existe pas. |
et pourtant... mysql le gère avec LIMIT, mais c'est pas standard, et tous les sgbd n'ont pas de fonction equivalente
Marsh Posté le 06-11-2002 à 19:46:51
beleg a écrit a écrit : tu tes jamais apercu que l'affichage du contenu des tables était paginé avec LIMIT d'ailleurs |
J'ai jamais eu de table assez grande pour qu'elle soit paginée
Marsh Posté le 07-11-2002 à 14:43:33
LIMIT est aussi un bon moyen pour optimiser des requêtes.
Si vous savez que vous n'attendez qu'un seul tuple lors d'une requête n'hésiter pas à le spécifier en terminant votre requête par LIMIT 1.
Mirgolth
Marsh Posté le 07-11-2002 à 14:55:43
mirgolth a écrit a écrit : LIMIT est aussi un bon moyen pour optimiser des requêtes. Si vous savez que vous n'attendez qu'un seul tuple lors d'une requête n'hésiter pas à le spécifier en terminant votre requête par LIMIT 1. Mirgolth |
Dans un tel cas, je vois pas l'intérêt de rajouter le LIMIT 1 si la requête ne ramène qu'une seule ligne de donnée.
Par contre, si tu veux dire que le code derière ne traitera qu'une seule ligne de donnée alors oui, le LIMIT 1 aura un inérêt. Par contre, ca risque de limiter l'évolution du système (si tu modifies le code pour traiter n ligne, tu risque d'oublier de virer la limitation et là, bonjour pour comprendre ce qui merde. )
Marsh Posté le 07-11-2002 à 15:03:56
omega2 : bin si, je pense que le select se tapera pas toute la base de données pour trouver tes résultats. Imagine que ce que tu cherches soit en première position et que tu aies 100 000 entrées. Si tu ne mets pas de LIMIT 1, alors le select se tapera toute la base pour ne finalement te retourner qu'un seul résultat, alors que si tu mets le LIMIT 1 bin le select s'arrête dès qu'il a trouvé un résultat. D'où un gain de temps et de perfos.
Donc je pense que l'optimisation est réelle sur des grosses bases de données mais très peu visible dans le cas des petites. Et effectivement, côté debug c'est moyen
Marsh Posté le 07-11-2002 à 15:13:26
Il me semble que le LIMIT n'est actif qu'au niveau du flux retourné au programme.
SI t'as le moindre ORDER BY ou le moindre WHERE, il est obligé de vérifié toutes les lignes pour savoir quelles sont les réponses potentiellement à retourné (il utilise les index pour chercher et l'ordre naturel ou les critaires du ORDRE BY pour savoir parmis les potentiels quel est celui qui doit être retourné au programme)
Bref, un LIMIT 1 n'a pas vraiment de raison d'être si t'es déjà certain de n'avoir qu'une seule réponse.
LE seul cas que je vois ou c'est vraiment utile, c'est un simple SELECT le plus simple possible (juste la liste des colones et le nom de la table)
Bon, pour être sur, il faut demander à un pro : JJJJJOOOOOOOCCCCCCEEEEEE (alias joce quand on parle sans crier ), on a besoin de ta science.
Marsh Posté le 07-11-2002 à 15:19:42
Bien sur il faut l'utiliser à bon escient.
Phpmyadmin l'utilise dès que tu fait un UPDATE d'un tuple précis.
Ca me rassure aussi quand je fait des DELETE
pour plus d'infos :
La doc MySQL sur l'Optim avec LIMIT #
Marsh Posté le 07-11-2002 à 15:31:21
mirgolth a écrit a écrit : Bien sur il faut l'utiliser à bon escient. Phpmyadmin l'utilise dès que tu fait un UPDATE d'un tuple précis. Ca me rassure aussi quand je fait des DELETE pour plus d'infos : La doc MySQL sur l'Optim avec LIMIT # |
A, ça, je savais pas par contre.
Marsh Posté le 05-11-2002 à 17:01:39
Voilà j'ai ça :
Qui va me chercher toutes les lignes contenant stat et qui m'affiche un joli tableau tout mignon. Maintenant est-ce qu'il existe une commande MySQL qui permet d'afficher seulement un nombre défini de lignes d'une sélection ? Ce serait pour limiter le nombre de ligne affichées par page... Ca fait 2 jours que je cogite là-dessus, mais rien à faire, ça coince. J'ai rien trouvé de semblable dans la doc de mysql.com.
Je voudrais bien faire une boucle qui va me chercher les 5 première ligne, puis les 5 autres sur la prochaine page, et ainsi de suite. Mais primo je ne vois pas comment m'y prendre, secondo il me semble stupide de faire cracher 100 lignes(par exemple) à MySQL puis d'en récupérer 5 alors qu'il pourrait seulement en envoyer 5...
Ch'ais pas si ch'uis très clair, 'faut me dire si vous comprenez pas