Bonjour,
je développe un site sur serveur dédié (puissant).
Etant donné le nombre de requetes par secondes trop grand (78 req/sec), j'ai cherché à reduire celui-ci en optimisant mes scripts...
Plutot que de faire une boucle par requete, de la forme:
<?
$result = SELECT * FROM table1 WHERE ...
while($ligne = mysql_fetch_object($result)){
$result2 = SELECT * FROM table2 WHERE ...
while($ligne2 = mysql_fetch_object($result2)){
echo $ligne->row1." ".$ligne2->row2;
}
}
?>
j'ai transformer mes requetes avec des INNER JOIN, LEFT JOIN,...
pour avoir tout les resultats d'un seul coup.
Le probleme arrive lors de l'execution de ces requetes:
une page qui contient une seule requete reliant 3 tables différentes ne veut pas s'afficher en ligne alors qu'elle fonctionne tres bien en local (avec Easy PHP). Le chargement de cette page est tres long et au bout d'un certain temps, erreur "Impossible d'afficher la page".
Je suis donc aller voir les Processus Mysql pendant le chargement de cette page. Ma requete apparait bien dans la liste mais le tableau montre que:
Etat = "Copying to tmp table"
Durée = va jusqu'à 1500 sec
je voi meme d'autres requetes (qui sont a mon avis générées) apparaitre. De plus, lorsque je ferme la page qui charge le script, la requete reste toujours dans les processus et je dois la supprimer pour que le serveur arrete de ramer.
Vous allez surement me demander la requete en question, mais le probleme ne vient pas de là. Il est vrai que le site accueille beaucoup de visiteurs (donc beaucoup de requetes), mais tout les sites de programmation parlent d'INNER JOIN pour optimiser MYSQL, alors que dans mon cas, cela va dans le sens contraire.
Je vous demande de me faire part de toutes vos remarques ou de vos éventuels problemes sur ce point (même si vous ne connaissez pas l'explication), car c'est en discutant que vous m'aiderez à résoudre ce probleme qui m'insuporte.
En vous remerciant d'avance...
Arthur