Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

badawan17 Les boutiques en ligne : delle1 Achat - Vente Divers : Hisokasama et 26 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

[SQL-PHP] Recup données : le plus rapide ?

 
n°4746
tifrere
Junos power
Profil : Dinosaure
Posté le 30-07-2003 à 15:20:15  profilanswer
 

pour récup des données dans une base mysql, qu'est ce qui est plsu rapide ?
 
edit : fo virer le mysql_numrows de la boucle (paske ca le recalcule a chak fois ( mais c pas le but de ma kestion :D)
 
requete :  

Code :
  1. $requete=mysql_query("select * from table;" );


 
recuperation des données dans la boucle

Code :
  1. for ($i=0 ; $i<mysql_numrows($requete) ; $i++)


 
methode 1 :

Code :
  1. $data1 = mysql_result($requete , $i , "champ_1" );
  2.         $data2 = mysql_result($requete , $i , "champ_2" );
  3.         .....


methode 2 :

Code :
  1. $ligne=mysql_fetch_array($requete1);
  2.         $data1 = $ligne[0];
  3.         $data2 = $ligne[1];
  4.         .....


 
c koi le plsu rapide ?


Message édité par tifrere le 30-07-2003 à 15:21:51

---------------
Speed, Quality, Price ... pick any two
n°4747
SgW
chimère fantômatique
Profil : Vieux de la vieille
Posté le 30-07-2003 à 17:56:46  profilanswer
 

le passage par tableau.
 
de plus tu peux faire des jointures ou des tris ultérieument


---------------
- Tabula Rasa - Clan Origine : Vivace
n°4751
tifrere
Junos power
Profil : Dinosaure
Posté le 31-07-2003 à 10:01:51  profilanswer
 

:jap:


---------------
Speed, Quality, Price ... pick any two
n°4759
littleperc​eval
Profil : Jeune recrue
Posté le 31-07-2003 à 17:08:48  profilanswer
 

perso je penche pour les tableaux aussi.

n°4763
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 31-07-2003 à 22:16:37  profilanswer
 

perso je prefere  
 
while ( $rep = mysql_fetch_array( $query) )
{
 bla bla bla
}


---------------
informatique / jeu vidéo / blog du développeur / Pour les hommes modernes
n°4929
Solkien
Profil : Jeune recrue
Posté le 24-08-2003 à 20:19:33  profilanswer
 

$requete=mysql_query("select * from table;" );
while($ligne=mysql_fetch_row($requete))
      for ($i = 0 ; $i < $nombre_de_champ ; $i++){
          ${"data".$i} = $ligne[$i];
      }
}
 
C'est ce que je ferais (et fais pour mon site) ... mais la, tes variables seront effacé a chaque boucle, donc tu devrais travailler sur tes données dans la boucle (pas forcement pratique. Pour avoir toutes tes info apres laz boucle, je te propose :
 
$requete=mysql_query("select * from table;" );
$j = 0;
while($ligne=mysql_fetch_row($requete))
      for ($i = 0 ; $i < $nombre_de_champ ; $i++){
          ${"data".$j}[$i] = $ligne[$i];
      }
$j++
}
 
J'espere avoir été d'une quelconque utilité ... Bye
 
Solkien
 
ps : ds ton code, ne mélange pas les mysql_fetch_row et mysql_fetch_array

n°5894
khantic
Profil : Jeune recrue
Posté le 16-12-2003 à 10:35:21  profilanswer
 

$requete=mysql_query("select * from table;" );
$i=0;
while($ligne[$i++]=mysql_fetch_array($requete));
 
Et tu as tous les enregistrements dans un tableau bidimensionelle sans perdre tes anciennes variables...
 
Et je conseille mysql_fetch_array plutot que mysql_fetch_row : Plus pratique et aussi rapide.

n°5920
tifrere
Junos power
Profil : Dinosaure
Posté le 16-12-2003 à 18:08:27  profilanswer
 

finalement j'ai adpoté le mysql_fetch_array avec mysql
et pg_fetch_object avec postgres (enfin pour postgres g pas encore testé les autres choses)


---------------
Speed, Quality, Price ... pick any two
n°5922
ollone
Part of the 'One brothers
Profil : Vieux de la vieille
Posté le 16-12-2003 à 18:26:34  profilanswer
 

tifrere a écrit :

finalement j'ai adpoté le mysql_fetch_array avec mysql
et pg_fetch_object avec postgres (enfin pour postgres g pas encore testé les autres choses)


 
J'utilise aussi mysql_fetch_array...
Mais pourquoi n'utilises-tu pas une classe pour piloter ta base de données ?
Perso, j'utilise deux classes pour accéder à mes bases MySql et Oracle8.

n°5923
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 16-12-2003 à 18:29:32  profilanswer
 
n°5925
Tisiphone
Sex, Drugs, Knowledge
Profil : Dinosaure
Posté le 16-12-2003 à 18:50:56  profilanswer
 

Méthode 2 c'ets le mieux je crois ;)


---------------
Membre passif de la Pourriture De Topic Team;  
Membre de la TEAM Project Dolphin et de la Flemmards Team :sol:
Membre de la Cool Team  
"Seb remonteur de moral de MwA bah voui zenti msieu ke
n°5933
tifrere
Junos power
Profil : Dinosaure
Posté le 17-12-2003 à 01:00:42  profilanswer
 

nodashi a écrit :

virer le select * ;)


ui j'ai lu ca qqpart : vo mieux selectioner tous les champs
 
mais la ct juste pour l'exemple


---------------
Speed, Quality, Price ... pick any two
n°5936
nico95
A la poursuite du SMS Staÿle
Profil : Dinosaure
Posté le 17-12-2003 à 09:21:02  profilanswer
 

nodashi a écrit :

virer le select * ;)

et à remplacer par ?

n°5939
khantic
Profil : Jeune recrue
Posté le 17-12-2003 à 10:28:43  profilanswer
 

Il vaut mieux remplacer * par la liste des champs que tu va utiliser réellement dans la suite de ton script.

n°5940
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 17-12-2003 à 10:43:52  profilanswer
 

khantic a écrit :

Il vaut mieux remplacer * par la liste des champs que tu va utiliser réellement dans la suite de ton script.  


 
+1 meme si tu selectionnes tout les champs


---------------
informatique / jeu vidéo / blog du développeur / Pour les hommes modernes
n°5941
Tisiphone
Sex, Drugs, Knowledge
Profil : Dinosaure
Posté le 17-12-2003 à 12:30:33  profilanswer
 

De toute façon vu la rapidité de php et mysql  :lol:


---------------
Membre passif de la Pourriture De Topic Team;  
Membre de la TEAM Project Dolphin et de la Flemmards Team :sol:
Membre de la Cool Team  
"Seb remonteur de moral de MwA bah voui zenti msieu ke
n°5943
nico95
A la poursuite du SMS Staÿle
Profil : Dinosaure
Posté le 17-12-2003 à 13:47:02  profilanswer
 

nodashi a écrit :


 
+1 meme si tu selectionnes tout les champs

:heink: alors là si tu as des stats de performance en fonction du type de requete ( * ou la liste des tous les champs), alors je suis preneur ...
 
Parce que franchement, je pense qu'il vaut mieux faire * plutot que de citer toute la liste....

n°5947
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 17-12-2003 à 15:08:57  profilanswer
 

nico95 a écrit :

:heink: alors là si tu as des stats de performance en fonction du type de requete ( * ou la liste des tous les champs), alors je suis preneur ...
 
Parce que franchement, je pense qu'il vaut mieux faire * plutot que de citer toute la liste....


 
j'ai plus le site mais je te jure ke c'est vrai ;)


---------------
informatique / jeu vidéo / blog du développeur / Pour les hommes modernes
n°5949
khantic
Profil : Jeune recrue
Posté le 17-12-2003 à 15:41:22  profilanswer
 

En y réfléchissant, c'est bien possible :
 
en mettant le * , mysql a une tache en plus : il doit chercher la liste de tous les champs dans la table alors que si tu le met dès le départ, il n'a plus cette recherche à faire... D'ou le gain de temps, je pense.
 
Maintenant, je ne pense pas que ça lui prenne beaucoup de temps étant donné que la structure des tables doit être quelques chose de facile à trouver dans mysql (plus facile que de faire la requete elle même).
 
Je dit ça, mais c'est peut être pas ça la vrai explication... :heink:

n°5964
tifrere
Junos power
Profil : Dinosaure
Posté le 17-12-2003 à 20:39:27  profilanswer
 

http://www.phpbuilder.com/columns/ [...] hp3?page=6
 

Citation :

Optimize your MySQL queries
 
Select only the columns you need for your query. If you really don't want to select ALL the columns of your table don't digit SELECT * FROM tablename but write all the column names instead of "*" even if this means more writing work.

Sort your data only if it's really necessary. It wastes a lot of time.  
Keep your filter conditions as easy as possible..  
Avoid mathematic MySQL-operations if possible. Leave them to PHP.  
Use connect only if you are sure that your pages will be connected only once and your user won't reconnect.  
Use pconnect for a persistant connection if you have several queries on your page.  
Use my_fetch_row() instead of my_fetch_array(). Sometimes this may be faster (I read somewhere).  
my_fetch_rows() gives back an enumerated array:  


Message édité par tifrere le 17-12-2003 à 20:41:41

---------------
Speed, Quality, Price ... pick any two
n°5965
tifrere
Junos power
Profil : Dinosaure
Posté le 17-12-2003 à 20:43:07  profilanswer
 

Tisiphone a écrit :

De toute façon vu la rapidité de php et mysql  :lol:  


j'ai travaillé sur php et mysql avec une base dont une table faisait plus de 2go ( 4 millions d'enregistrement)
 
bah la tu vois la différence
en créant des index (honte sur moi je l'ai pas fait dès le début) j'ai gagné énormément en vitesse d'execution


---------------
Speed, Quality, Price ... pick any two
n°5972
khantic
Profil : Jeune recrue
Posté le 17-12-2003 à 22:51:17  profilanswer
 

Au boulot, sur une base de données énorme, on a du faire tourner une requete mysql... pendant plus de 8 heures (toute la nuit). La base ne devait pas être optimisé non plus (je ne l'ai pas vu, mais bon...)
 
Alors, effectivement, les index et toutes autres astuces ont leur importance...

n°5976
Nodashi
Silence je dors
Profil : Dinosaure
Posté le 18-12-2003 à 07:52:01  profilanswer
 

khantic a écrit :

Au boulot, sur une base de données énorme, on a du faire tourner une requete mysql... pendant plus de 8 heures (toute la nuit). La base ne devait pas être optimisé non plus (je ne l'ai pas vu, mais bon...)
 
Alors, effectivement, les index et toutes autres astuces ont leur importance...

:heink:


---------------
informatique / jeu vidéo / blog du développeur / Pour les hommes modernes
n°5977
khantic
Profil : Jeune recrue
Posté le 18-12-2003 à 09:22:18  profilanswer
 

Tu as l'air sceptique, mais avec une bonne dose de jointure sur une base énorme mal faite (en plus), et en supprimant le timeout mysql, eh bien ça dure longtemps...
 
La base a été commencé à la fin des années 1980 sous d'autres systèmes à l'époque, et elle est passé, entre autres par le remplissage manuelle, par le miniel, et par l'internet aujourd'hui... Alors imagine...

n°5978
tifrere
Junos power
Profil : Dinosaure
Posté le 18-12-2003 à 11:14:02  profilanswer
 

khantic a écrit :

Tu as l'air sceptique, mais avec une bonne dose de jointure sur une base énorme mal faite (en plus), et en supprimant le timeout mysql, eh bien ça dure longtemps...
 
La base a été commencé à la fin des années 1980 sous d'autres systèmes à l'époque, et elle est passé, entre autres par le remplissage manuelle, par le miniel, et par l'internet aujourd'hui... Alors imagine...


ah mon avis il veut tout simplkement dire ke c pas genial pour des profesionnels et surtout pour une base enorme d'avoir une base mySQL


---------------
Speed, Quality, Price ... pick any two
n°5982
khantic
Profil : Jeune recrue
Posté le 18-12-2003 à 13:55:57  profilanswer
 

Ouais, mais c'est leur problème, moi je suis en stage :D et j'y peut rien :pfff:  
 
Pourquoi mysql ne serai pas bon pour un usage professionnel ?

n°5985
Tisiphone
Sex, Drugs, Knowledge
Profil : Dinosaure
Posté le 18-12-2003 à 17:54:11  profilanswer
 

tifrere a écrit :


j'ai travaillé sur php et mysql avec une base dont une table faisait plus de 2go ( 4 millions d'enregistrement)
 
bah la tu vois la différence
en créant des index (honte sur moi je l'ai pas fait dès le début) j'ai gagné énormément en vitesse d'execution


des indexs? c'ets quoi? :??:


---------------
Membre passif de la Pourriture De Topic Team;  
Membre de la TEAM Project Dolphin et de la Flemmards Team :sol:
Membre de la Cool Team  
"Seb remonteur de moral de MwA bah voui zenti msieu ke
n°5986
lukefab
meuh
Profil : Habitué
Posté le 18-12-2003 à 18:00:19  profilanswer
 

c'est des trucs de BDistes...  :D


---------------
Opera 8.51 pour Windows, Linux, FreeBSD, Solaris, Mac OS X.
www.opera.com , c'est bon et sans morceau de pub dedans, mangez-en.
Un pingouin aux pommes ?
n°5987
Tisiphone
Sex, Drugs, Knowledge
Profil : Dinosaure
Posté le 18-12-2003 à 18:45:51  profilanswer
 

lukefab a écrit :

c'est des trucs de BDistes...  :D  


Nan mais ça peut m'etre utile pour plus tard quand la BDD pour mon site aura grossi ;)


---------------
Membre passif de la Pourriture De Topic Team;  
Membre de la TEAM Project Dolphin et de la Flemmards Team :sol:
Membre de la Cool Team  
"Seb remonteur de moral de MwA bah voui zenti msieu ke

Aller à :
Ajouter une réponse