[MySQL] Ca existe ce genre de commande ? :

Ca existe ce genre de commande ? : [MySQL] - PHP - Programmation

Marsh Posté le 05-11-2002 à 17:01:39    

Voilà j'ai ça :
 

Code :
  1. $query = "SELECT nom,type,descrip,auteur,hauteur,largeur,taille FROM smiley_tbl WHERE type='stat'";
  2. $resultat = mysql_query($query);
  3. while ($row = mysql_fetch_array($resultat))
  4. {
  5.      print("Je vous passe les détails..." );
  6.         }


 
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  :D  

Reply

Marsh Posté le 05-11-2002 à 17:01:39   

Reply

Marsh Posté le 05-11-2002 à 17:10:56    

cleanx a écrit a écrit :

Voilà j'ai ça :
 

Code :
  1. $query = "SELECT nom,type,descrip,auteur,hauteur,largeur,taille FROM smiley_tbl WHERE type='stat'";
  2. $resultat = mysql_query($query);
  3. while ($row = mysql_fetch_array($resultat))
  4. {
  5.      print("Je vous passe les détails..." );
  6.         }


 
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  :D  
 




 
$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


Message édité par Schtroumpheur le 05-11-2002 à 17:11:15
Reply

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

Reply

Marsh Posté le 05-11-2002 à 17:47:06    

tas jamais utilisé phpMyAdmin ?

Reply

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

Reply

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  :D

Reply

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  [:sinclaire]

Reply

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  :D  




 
J'ai jamais eu de table assez grande pour qu'elle soit paginée  :sarcastic:  :D

Reply

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

Reply

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. ;) )

Reply

Marsh Posté le 07-11-2002 à 14:55:43   

Reply

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 :pt1cable:


Message édité par Taiche le 07-11-2002 à 15:04:50

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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. ;)

Reply

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 #


Message édité par Mirgolth le 07-11-2002 à 15:20:49

---------------
Livres dont vous êtes le héros
Reply

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

Reply

Sujets relatifs:

Leave a Replay

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