1 Seule requête pour 5 count ?
ant331
-
Mambo5 -
Mambo5 -
Bonjour a tous,
Par souci d'optimisation et rien que ça, je me demandais si il ne valait pas mieux regrouper mes (5)COUNTs en 1 seule grosse requête.
Je m'explique, j'ai une page profile ou je récupère les infos du membres c'est a dire les amis,les fans,les commentaires,les favoris et les uploads...je fais ensuite un count (ID) pour récupéré le nombre de chaque table correspondant a l'ID du membre.
voici l'exemple:
Donc voila, y a t-il moyen de faire ça en UNE seule grosse requête ? si oui comment procéder et est ce vraiment nécessaire ? le don de temps/performance est significatif ?
merci a ceux qui prendrons le temps de me répondre. Bonne journée.
Par souci d'optimisation et rien que ça, je me demandais si il ne valait pas mieux regrouper mes (5)COUNTs en 1 seule grosse requête.
Je m'explique, j'ai une page profile ou je récupère les infos du membres c'est a dire les amis,les fans,les commentaires,les favoris et les uploads...je fais ensuite un count (ID) pour récupéré le nombre de chaque table correspondant a l'ID du membre.
voici l'exemple:
$sql ="SELECT COUNT(id)FROM fan WHERE user_to = '$id' "; $nb_fan = $DB->tcount($sql); $sql ="SELECT COUNT(id) FROM friends WHERE id_to = '$id' OR id_from ='$id' AND status ='1' "; $nb_friends = $DB->tcount($sql); $sql ="SELECT COUNT(id) FROM comments WHERE comment_user_id = '$id' "; $nb_comments = $DB->tcount($sql); $sql ="SELECT COUNT(id) FROM pics WHERE pics_user_id = '$id' "; $nb_pics = $DB->tcount($sql); $sql ="SELECT COUNT(id) FROM favoris WHERE fav_user_id = '$id' "; $nb_fav = $DB->tcount($sql);
<li><a><strong>Images téléchargé :</strong> <?php echo intval($nb_pics);?></a></li> <li><a><strong>Favoris :</strong> <?php echo intval($nb_fav);?></a></li> <li><a><strong>Nombre de fan :</strong> <?php echo intval($nb_fan);?></a></a></li> <li><a><strong>Nombre d'amis:</strong> <?php echo intval($nb_friends);?></a></a></li> <li><a><strong>Nombre de commentaires:</strong> <?php echo intval($nb_comments);?></a></a></li>
Donc voila, y a t-il moyen de faire ça en UNE seule grosse requête ? si oui comment procéder et est ce vraiment nécessaire ? le don de temps/performance est significatif ?
merci a ceux qui prendrons le temps de me répondre. Bonne journée.
5 réponses
-
As-tu un champ en commun qui te servira de jointure entre ces tables ?
-
-
-
Bonjour ant331,
Une requête UNION pourrait bien être la solution ?
https://doc.pcsoft.fr/fr-FR/?2034004&2034004
Cordialement -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Voici comment obtenir tous tes résultats en 1 requête, je te laisse l'adapter à ton code :SELECT (SELECT COUNT(*) FROM table_1) AS nb_table_1, (SELECT COUNT(*) FROM table_2) AS nb_table_2, (SELECT COUNT(*) FROM table_3) AS nb_table_3