Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
762 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL] Ca existe ce genre de commande ? :

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Ca existe ce genre de commande ? :

n°239969
cleanx
Posté le 05-11-2002 à 17:01:39  profilanswer
 

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  

mood
Publicité
Posté le 05-11-2002 à 17:01:39  profilanswer
 

n°239978
Schtroumph​eur
bwwwwwaaaaarkkkkkkk!!!!!!
Posté le 05-11-2002 à 17:10:56  profilanswer
 

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
n°239983
cleanx
Posté le 05-11-2002 à 17:14:48  profilanswer
 

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

n°240007
beleg
黑社會
Posté le 05-11-2002 à 17:47:06  profilanswer
 

tas jamais utilisé phpMyAdmin ?

n°240028
cleanx
Posté le 05-11-2002 à 18:14:25  profilanswer
 

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

n°240083
beleg
黑社會
Posté le 05-11-2002 à 20:00:58  profilanswer
 

tu tes jamais apercu que l'affichage du contenu des tables était paginé  :??:  avec LIMIT d'ailleurs  :D

n°240088
lorill
Posté le 05-11-2002 à 20:41:16  profilanswer
 

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]

n°240859
cleanx
Posté le 06-11-2002 à 19:46:51  profilanswer
 

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

n°241232
Mirgolth
Posté le 07-11-2002 à 14:43:33  profilanswer
 

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

n°241249
omega2
Posté le 07-11-2002 à 14:55:43  profilanswer
 

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

mood
Publicité
Posté le 07-11-2002 à 14:55:43  profilanswer
 

n°241266
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-11-2002 à 15:03:56  profilanswer
 

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.
n°241281
omega2
Posté le 07-11-2002 à 15:13:26  profilanswer
 

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

n°241288
Mirgolth
Posté le 07-11-2002 à 15:19:42  profilanswer
 

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
n°241303
omega2
Posté le 07-11-2002 à 15:31:21  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL] Ca existe ce genre de commande ? :

 

Sujets relatifs
[mysql] comment changer le type d'une table ?[Postgres] commande linux
Pb update mysql[PHP/MySQL]Comment je fais pour récupérer la valeur que sum() créé ?
Probleme avec la requete MySQL UPDATEconnection a une base MySQL avec vb .NET !!
[MySQL] Performance et ordre des champstransfert de data d'un fichier csv dans une base de données mysql
Récupérer une sauvegarde de MySQLeuh la commande cd (en shell) en appels systeme, ça donne quoi?
Plus de sujets relatifs à : [MySQL] Ca existe ce genre de commande ? :


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR