Aide optimisation d'une requete MySQL
Bonjour,
J'ai une petite question à vous poser, je ne sais pas ce qu'il est mieux de faire d'un point de vue performances pour un système tout simple de news qui peuvent être rattachées à des images.
J'ai une table contenant mes news (ID, TITRE, TEXTE)
ainsi qu'une table contenant mes images (ID, URL, ID_NEWS)
Actuellement je fais comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11
| $retour_messages=mysql_query("SELECT * FROM news ");
while($result=mysql_fetch_assoc($retour_messages)) {
$aff.='<article>';
$aff.='<p>'.getdateSQL($result["PDATE"]).' - <strong>'.$result["TITRE"].'</strong></p>';
$aff.=$result["TEXTE"];
$r=mysql_query("SELECT * FROM news_images WHERE ID_GALERIE=".$result["ID"]."");
while($img=mysql_fetch_assoc($r)) {
$aff.='<img src="upload/news/'.$img["URL"].'">';
}
$aff.='</article>';
} |
D'un niveau performances, je me suis dit que je pourrai utiliser une jointure pour éviter la boucle dans la boucle…
Voici donc ma requête :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $retour_messages=mysql_query("
SELECT * FROM news JOIN
news_images ON news.ID = news_images.ID_GALERIE
WHERE news.PUBLIE=1
GROUP BY news.ID");
while($result=mysql_fetch_assoc($retour_messages)) {
$aff.='<article>';
$aff.='<p>'.getdateSQL($result["PDATE"]).' - <strong>'.$result["TITRE"].'</strong></p>';
$aff.=$result["TEXTE"];
$aff.='<img src="upload/news/'.$result["URL"].'">';
$aff.='</article>';
} |
Seulement avec ce code j'ai uniquement la première image qui s'affiche, il faudrait boucler sur les images en ayant le total du nombre de résultats trouvé ?
Quelle serait selon vous la meilleure solution d'un point de vue performances ?
ça serait intéressant d'avoir votre avis à ce sujet,
D'avance merci et salutations