Optimisation de requetes

Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009 - 29 mai 2006 à 23:46
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 31 mai 2006 à 00:44
Salut,


Je voudrais optimiser mes requetes, mais j'ai besoin de votre aide.


1ere, j'ai un forum, et sur celui ci, je voudrais y affiché les
informations du membre ayant posté un sujet, sur une autre base de
donnée que le forum :

require ("bdd1.php");

require ("bdd2.php");


$requete = 'SELECT id, createur, sujet, timestamp FROM table_forum WHERE type="1" ORDER BY id DESC LIMIT 0,15';
$query = mysql_query($requete,$bdd1);
while($recupere = mysql_fetch_array($envoi))
{



  $select_membre 'SELECT pseudo, prenom, age FROM table_membre WHERE id "'.$recupere['createur'].'"';


  $query_membre = mysql_query($select_membre,$bdd2);


  $recupere_membre = mysql_fetch_array($query_membre);



  echo'Topic créer par : '.$recupere_membre['pseudo'].' prénomé '.$recupere_membre['prenom'].' agé de '.$recupere_membre['age'].' le '.$recupere['timestamp'].'
';


  echo'Sujet du topic : '.$recupere['sujet'].'
';

}


>> Celà fait 16 requetes, qui fait quand même beaucoup ^^


2eme, faire un regroupement de requetes... :

$insert1 = 'INSERT INTO Table1 (id) VALUES ("1")';
$insert2 = 'INSERT INTO Table2 (pseudo) VALUES ("patapouf")';$delete 'DELETE FROM Table3 WHERE id "5"';

mysql_query($insert1);
mysql_query($insert2);
mysql_query($delete);


Merci de votre aide

Tilix.

11 réponses

hlimaiem Messages postés 106 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 17 janvier 2007
30 mai 2006 à 04:20
Limaiem heykel,
Bonjour , tu peut utiliser les requetes compose don voici un exemple
SELECT * FROM nom_de_table WHERE id_persone IS (IN ou NOT IN) (SELECT id_xxx FROM table WHERE id=.......)
Tu peut orienter tes requete dans ce sens tu gangnerai bq en rapidite.
Sinon tu peut toujours utiliser les vues c'est aussi une solution quand t'a plusieurs enregistrement et tu veux les traiter separement
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
30 mai 2006 à 09:43
 salut
 au passage pour info






echo


' Topic créé par : '.$recupere_membre['pseudo'].' prénommé '.$recupere_membre['prenom'].' âgé de '.$recupere_membre['age'].' le '.$recupere['timestamp'].'
';
 
echo


'Sujet du topic : '.$recupere['sujet'].'
';


sujet du topic --> genre de pléonasme non ?
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2006 à 12:57
Salut,

en une seule requête :

$requete = 'SELECT f.id, f.createur, f.sujet, f.timestamp,m.pseudo,m.prenom,m.age FROM table_forum f LEFT JOIN table_membre m ON m.id=f.createur WHERE f.type=1 ORDER BY f.id DESC LIMIT 15'; //attention au limit c'est pas optimisé

$query = mysql_query($requete);

while($recupere = mysql_fetch_array($envoi))
{
  echo'Topic créer par : '.$recupere['pseudo'].' prénomé '.$recupere['prenom'].' agé de '.$recupere['age'].' le '.$recupere['timestamp'].'
';
  echo'Sujet du topic : '.$recupere['sujet'].'
';

}

pour les optimisation MySQL : Optimiser MySQL

a +
<hr size="2" width="100%" /><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009
30 mai 2006 à 21:47
[auteurdetail.aspx?ID=724313 hlimaiem] et

[auteurdetail.aspx?ID=1319 Anthomicro]



> Ce genre de requetes ne sont possible dans la limite où les 2
tables se situe sur la même base de donnée, ce qui n'est pas le cas ici.

[auteurdetail.aspx?ID=649802 sidf]

> Non se n'est pas un pléonasme, mais on peut dire sinon : Titre du topic... (étant donné que c'est un forum ^^')
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2006 à 22:36
Dans ce cas là faut revoir la conception de ta base de données, car c'est mal conçu là :-(
<hr size="2" width="100%" /><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009
30 mai 2006 à 22:56
Non elle n'est pas mal concu, elle est comme ça à cause d'un nombre
trop important de requetes ;) (que j'essaye par la même occasion
d'optimisé)

Personne n'a de réponse pour ma 2e requetes ?
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2006 à 23:27
"

Non elle n'est pas mal concu, elle est comme ça à cause d'un nombre trop important de requetes ;) "

Si tu le dis... bon courage :)

<hr size="2" width="100%" /><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
30 mai 2006 à 23:41
"Ce genre de requetes ne sont possible dans la limite où les 2 tables se situe sur la même base de donnée, ce qui n'est pas le cas ici."
Alors tu ne peux rien faire.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 mai 2006 à 00:28
Bah si changer de conception, mais bon apparemment c'est bien conçu donc bon non il ne peut rien faire en fait :-( (c'est le vendeur de serveurs qui doit être content)

<hr size="2" width="100%" /><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Tilix Messages postés 171 Date d'inscription samedi 4 décembre 2004 Statut Membre Dernière intervention 31 août 2009
31 mai 2006 à 00:40
Et pour la seconde ?

$insert1 = 'INSERT INTO Table1 (id) VALUES ("1")';
$insert2 = 'INSERT INTO Table2 (pseudo) VALUES ("patapouf")';$delete 'DELETE FROM Table3 WHERE id "5"';

mysql_query($insert1);
mysql_query($insert2);
mysql_query($delete);


Y'a pas moyen d'optimiser ça ?
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 mai 2006 à 00:44
Non

<hr size="2" width="100%" /><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous