[PHP/MySQL] Optimisation de la requéte

Voila mon probleme
J’ai ce bout de code qui pompe un max en ressource
En local le pc est limite plantage et sur le serveur distant je sais pas mais faut bien 1 minute pour avoir un résultat.

Comment puis je faire optimisé ça ou avoir le meme résultat de manier différente?

            <?php 
            $query_top_comm = "select trombino.idx, trombino.pseudo, trombino.sexe, count(commentaires.refer) as commentaires from trombino left join commentaires on trombino.idx = commentaires.refer group by trombino.idx order by commentaires desc LIMIT 0 , 10";
            $top_comm = mysql_query($query_top_comm) or die(mysql_error());
            $row_top_comm = mysql_fetch_assoc($top_comm);
            $totalRows_top_comm = mysql_num_rows($top_comm);
 do { ?>
              <a href="index.php?idx=<?php echo $row_top_comm['idx']; ?>"><img src="img/<?php echo $row_top_comm['sexe']; ?>.gif" alt="<?php echo $row_top_comm['sexe']; ?>" /><?php echo $row_top_comm['pseudo']; ?></a> (<?php echo $row_top_comm['commentaires']; ?> commentaires)<br />
              <?php } while ($row_top_comm = mysql_fetch_assoc($top_comm));  ?>

Pour commencer :

SQL
[color=blue;font-weight:bold]SELECT[/color] T.idx,
       T.pseudo, 
       T.sexe, 
       COUNT(C.refer) as commentaires

FROM trombino T
LEFT JOIN commentaires C ON T.idx = C.refer
GROUP BY T.idx
ORDER BY commentaires DESC LIMIT 10

Pour le reste :

  1. on vérifie les index
  2. on réfléchis un peu à ce qu’on fait

Tu veux juste le nombre de commentaires? ben plutôt qu’une grosse jointure, stocke ça comme un champ de tes news, et mets le à jour dés que nécessaire…

Sinon une news par page, etc.

Spa une news, c’est un trombinoscope :ane:

En effet rajouter un nombre de commentaires et plus optimisé…

En gros : quand tu rajoutes un commentaire tu fais un incrément sur ta colonne concernée.

Pour vérifier que ca reste toujours "valide" et bien tu peux compter les commentaires quand tu les affiches :wink:
$countCommentaire = 0
while commentaires
{
// afficher commentaires un par un
$a+1

}

Après si différence entre le nombre de commentaire comptés par la variable a et ceux stockés dans ta colonne nombre de commetaires et bien tu fais un UPDATE.

J’ai fait ca pour compter le nombre de véhicules en anomalie pour un dossier dans mon application. Bon c’est peut être pas le mieux, mais ca fonctionne correctement :wink:

EDIT : tain c’est chiadé les alias comment tu balances ca sans-nom ^^ j’ai un peu du mal à les visualiser mais en effet ca semble plus lisible au final !

En terme de consommation de ressources c’est beaucoup mieux ?

Y a deux choses : lisibilité, et optimisation.

Tout ce qui est du domaine de parser la requête n’entre pas tellement dans la lourdeur de la requête. Pire : lire T.pseudo c’est plus court que lire trombino.pseudo, et donc moyennant une résolution de nom postérieure, c’est pas forcément plus lent que sa requête de base.

Et c’est plus lisible.

Au niveau de l’optimisation, je ne sais pas.

okok, je voulais donc juste dire si ta proposition c’était de faire un truc plus lisible ou plus rapide :slight_smile: en fait c’est plus lisible et voilà :smiley:

t’as besoin que je le dise explictement? :slight_smile: