Ajouter colonne "Nb de sujets" dans memberlist.php [Resolu] [phpBB] - PHP - Programmation
Marsh Posté le 14-03-2008 à 14:13:13
En combien s'affiche la requete SQL de base ? Y-a-til les GROUP BY dedans ?
Marsh Posté le 14-03-2008 à 14:37:16
Bonjour,
Je n'ai pas compris se que tu me demande babasss ?
Marsh Posté le 14-03-2008 à 14:40:46
Normal, je sais pas écrire une phrase....
En combien de temps s'affichait la requete SQL de base ? Y-a-til les GROUP BY dedans ?
Marsh Posté le 14-03-2008 à 14:48:12
Tu as essayé avec une sous requete :
Code :
|
Marsh Posté le 14-03-2008 à 14:53:57
Ok donc,
La requête SQL de base, donc sans mes modifications, il n'y a pas les GROUP BY, la voici :
Code :
|
Et pour le temps d'exécution il est entre : 0,15s et 0,20s 0,0287s
Donc autant qu'après ma modifications et avec "INNER JOIN"
Merci.
EDIT : Je me trompe, c'est plutôt 0,0287s et 0.0740s pour mon code modifié avec INNER JOIN
Code :
|
Je viens de tester ceci :
Code :
|
Ca a l'air de fonctionner, temps d'exécution 0,29s mais plus lourd quand même
Marsh Posté le 14-03-2008 à 15:26:17
Entre 0.29s et 40s, il y a de l'amélioration....
Il va forcément y avoir une charge supplémentaires en utilisant un système simple. Si tu as vraiment un problème de temps de réponse, tu peux faire une table agrégé qui te calcule tous les heures (via un CRON) le nb de post par id et tu fais une jointure avec cette table. Mais ce système est vraiment plus lourd...
Marsh Posté le 14-03-2008 à 15:34:45
Je récapitule pour que ce soit plus clair :
- Requête de base, sans la colonne NB de sujets : Tps d'écution : 0,0287s
Code :
|
- Ma modifications de la requête pour ajouter la colonne NB de sujets, qui fonctionne presque entièrement car il ignore tout les membres ayant 0 topics (ce qui est normal) : Tps d'éxécution : 0.0740s
Donc c'est presque ça...
Code :
|
- Même code mais avec LEFT JOIN, ça fonctionne mais le temps d'exécution passe à plus de 40 secondes.
- Et la requête qui fonctionne le mieux pour le moment : mais quand même environ 10 fois plus lourde que la requêtes de base : temps d'exécution 0,29s :
Code :
|
Merci babasss je vais garder cette derniere requête, en attendant si je trouve mieux.
Marsh Posté le 14-03-2008 à 16:02:48
Par contre je viens de voir qu'avec cette dernière requête, si je trie par nombre de sujet, le temps d'exécution passe à 33 sec :
Code :
|
Marsh Posté le 14-03-2008 à 16:18:04
Essaye de le faire en deux temps :
Marsh Posté le 15-03-2008 à 12:01:57
ReplyMarsh Posté le 15-03-2008 à 16:23:03
Bon voilà j'ai testé la table temporaire.
Les résultats sont OK mais le temps d'exécution est d'environ de 3 à 5 secondes.
J'ai fait ça comme requêtes :
Code :
|
Code :
|
Code :
|
Marsh Posté le 15-03-2008 à 17:45:07
Si tu veux gagner un peu de temps, tu peux associer une date de rafraichissement pour que le calcul ne se lance que si cela fait plus de X temps que la table n'a pas été recrée...
Marsh Posté le 16-03-2008 à 07:00:59
Merci,
Finalement j'ai fait plus simple...
J'ai rajouté une colonne dans la table_users qui liste le nombre de topics pour chaque user.
J'ai intégré les données dans la table via un petit script qui lance des requêtes avec une boucle et tout ça...
Et j'ai rajouté dans les codes le fait que ça incrémente le nombre de topics d'un user à chaque fois que cet user en créé un.
Et ça marche à la perfection.
Merci à vous.
Marsh Posté le 13-03-2008 à 17:53:48
Bonjour,
J'ai rajouté une colonne "Sujets" dans memberlist.php qui affiche le nombre de sujets de chaque membre.
J'utilise une Jointure avec "INNER JOIN" et "t.topic_poster = u.user_id"
Or tous les membres qui n'ont créé aucun topic sont ignoré en faisant comme ça.
Il faudrait utiliser "LEFT JOIN" pour que tout s'affiche.
Mais voilà mon problème, dès que je remplace "INNER JOIN" par "LEFT JOIN", la requête devient très longue. Elle passe d'environ
0,150.0740 seconde d'exécution à plus de 40 secondes.Voici le code php de la requête avec INNER JOIN:
Ce qui donne ceci :
Sauriez-vous me dire ce qui ne va pas ?
Merci d'avance pour votre aide.
Message édité par mkex64 le 16-03-2008 à 07:02:30
---------------
http://www.unicornis.org/