Problème avec les tables d'un forum :(

Problème avec les tables d'un forum :( - Programmation

Marsh Posté le 23-07-2002 à 12:04:19    

Salut a tous :)
 
Je suis en train de faire un forum, et je m'attaque a un problème assez corriace :(
 
J'ai inséré 450 000 topics pour tester la rapidité de l'affichage sur la page des topics ...
J'ai pas ete decu, ca mets plus de 4s pour s'afficher :( :( :(
 
On m'a parlé de couper les tables ...
Je m'explique :
Tous les 1000 topics, on créé une nouvelle table (topics_1, topics_2, etc)
Tu coup, plus de pb de vitesse puisque ke MySQL ne doit plus parser les 450 000 enregistrements, mais plus que 1000 ! :)
 
J'ai donc essayé, mais vraiment ji arrive pas ...
 
Sur la page pour poster un nouveau topic, il faudrait que je compte le nombre d'enregistrements sur la derniere table des topics ...
Mais justement !!
Voila la requete :
SELECT COUNT(*) FROM topics
 
Sauf que s'il y a par exemple 2250 topics, il faut que le COUNT(*) soit fait sur la table topics2 !!
 
Du coup, comment connaitre la derniere table ?
 
Je vous remercie enormement :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 12:04:19   

Reply

Marsh Posté le 23-07-2002 à 12:10:17    

RELAX Sky a écrit a écrit :

ha bin oui, un SELECT COUNT(*) FROM topics  c fatal  :lol:  
 
fait un count(index_des_topics)
 
 :lol:  




 
Ce serait pour la page d'affichage des topics ou dans le newtopic.php ?


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 12:12:47    

Ben sur la page d'affichage des topics, je fe :
 
SELECT * FROM topics WHERE ... ORDER BY ... LIMIT 40
Avec ca, il doit parser les 450 000 enregistrements, et ensuite faire le limit :(
C ca qui fait tout ramer :(


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 12:14:58    

soit tu boucles de 1 à n, soit tu stockes le nombre de table dans la table forum.
 
 
//ps : edité, voila c mieux :) je dormais encore :D
$i=0;
do {
  $query= "select count(id) AS nbenr from Topic".$i;
  $i++;
}
while ($row['nbenr']<1000)
//insertion dans topic.$i
 
ou bien  
$query= "select nom, description, nbtable from Forum where id=$forumAAfficher";
//insertion dans topic.$nbtable


Message édité par ethernal le 23-07-2002 à 12:23:05

---------------
...oups kernel error...
Reply

Marsh Posté le 23-07-2002 à 12:19:53    

RELAX Sky a écrit a écrit :

t'a pa d'index ?




 
Si si, sur l'id du topic :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 12:20:03    

Ethernal => Je matte ton code ;)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 12:22:07    

le plus simple est sans doute de stocker le nombre de table dans la table forum ;)
sinon tu devras faire autant de requête que tu as de table topic, et avec 450.000 enregs ça te fait 450 query :( ce qui à mon avis te prendras plus de temps que de faire une query de 450.000enr


---------------
...oups kernel error...
Reply

Marsh Posté le 23-07-2002 à 12:24:44    

il est chouette ton forum  :jap:  
je voulais poster dessus, mais j'ai pas réussi (erreur due à ta transformation actuelle)


---------------
...oups kernel error...
Reply

Marsh Posté le 23-07-2002 à 12:28:16    

ethernal a écrit a écrit :

il est chouette ton forum  :jap:  
je voulais poster dessus, mais j'ai pas réussi (erreur due à ta transformation actuelle)




 
Merchi bien ;)
Vi pour le moment, il est un peu cassé :D
 
Donc, tu suggeres que je stocke le nb de table dans une autre table, ou pk pas ds un fichier .txt ? :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 12:32:28    

e-sky ?
le tien tu sais bien que je l'adore ;)
 
je n'ai pas encore eu l'occasion de tester à fond la version 2, mais elle est bien rapide.
 
c possible que la version PHP 4.2.2 soit plus lente ??


---------------
...oups kernel error...
Reply

Marsh Posté le 23-07-2002 à 12:32:28   

Reply

Marsh Posté le 23-07-2002 à 12:33:28    

Max Evans a écrit a écrit :

 
 
Donc, tu suggeres que je stocke le nb de table dans une autre table, ou pk pas ds un fichier .txt ? :)




oui pq pas :)


---------------
...oups kernel error...
Reply

Marsh Posté le 23-07-2002 à 12:36:14    

ethernal a écrit a écrit :

 
oui pq pas :)




 
Oki, je v tester :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 13:50:07    

V voir ma poule :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 13:53:35    

J'ai lu ...
J'ai pas trouvé de truc en rapport avec le pb :D
 
V relire une 2° au cas ou :D


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 13:54:42    

Nan, g tjs rien trouvé :??:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 23-07-2002 à 14:19:55    

:lol:


---------------
...oups kernel error...
Reply

Marsh Posté le 24-07-2002 à 16:49:22    

Sky >> Je viens de tester :
 
La requete est un SELECT ... ... ... ORDER BY dateheure DESC avec jointure qui portent sur deux tables ...
Pour afficher 100 000 topics ; au moins 1.2s :(
 
J'ai donc enlevé le ORDER BY dateheure DESC, et la POUF, temps d'execution : 0.023s !!!!!! :love:
 
Pourtant, il y a bien un index qui porte sur le champ dateheure, c vraiment bizzare :(
 
Personne n'as pas une idee ? :)


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 24-07-2002 à 18:13:01    

Max Evans a écrit a écrit :

 
 
Je suis en train de faire un forum



 
 
Non tu déconnes  :??:    [:ddr555]


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 24-07-2002 à 18:17:53    

Zion a écrit a écrit :

 
 
 
Non tu déconnes  :??:    [:ddr555]  




 
 [:olimou]


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
Reply

Marsh Posté le 24-07-2002 à 18:34:09    

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed