Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1011 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [ PHP / MySQL ] j'ai 20 000 enregistrements et ca rame...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ PHP / MySQL ] j'ai 20 000 enregistrements et ca rame...

n°184284
j-'-r
Sans horraires fixe
Posté le 27-07-2002 à 16:01:06  profilanswer
 

comment faire dans un forum pour gerer 20 000 sujets sans que ca rame ?
 
y a un "truc" avec les index, mais je ne sais pas comment ca marche...
 
 
HELP
 
http://gigigan.homeip.net/jjndforu [...] =suj&cat=1
0.4 s
http://gigigan.homeip.net/jjndforu [...] =1&suj=134
1.2 s :(

mood
Publicité
Posté le 27-07-2002 à 16:01:06  profilanswer
 

n°184286
THE REAL S​MILEY
The Real Résistance!
Posté le 27-07-2002 à 16:02:31  profilanswer
 

si c'est bien codé, tu dois avoir autant de requete que tu aie 1 ou 20 000 sujets


---------------
༼ つ ◕_◕ ༽つ
n°184304
j-'-r
Sans horraires fixe
Posté le 27-07-2002 à 16:25:08  profilanswer
 

c'est le cas, je crois que c'est plus une question d'index et autre sous mysql

n°184385
j-'-r
Sans horraires fixe
Posté le 27-07-2002 à 18:59:57  profilanswer
 

yup ? :bounce:

n°184397
Max Evans
Posté le 27-07-2002 à 20:08:05  profilanswer
 

THE REAL SMILEY a écrit a écrit :

si c'est bien codé, tu dois avoir autant de requete que tu aie 1 ou 20 000 sujets




 
Ben ca y a une requete pour afficher les topics ...
Si c 1 ou 1 000 000 d'enregistrements, je vois pas pk y aurait plusieurs requetes  :??:


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°184420
Dost67
Posté le 27-07-2002 à 20:47:15  profilanswer
 

Sans source c'est dûr...

n°184478
CorranHorn
0.300 GFlops/s
Posté le 27-07-2002 à 22:11:17  profilanswer
 

dsl de polluer le topic mais sous mozilla ça ne lmarche pas très bien ton code javascript ;)
 
edit : un peu comme ici mais en pire :(


Message édité par CorranHorn le 27-07-2002 à 22:11:35

---------------
A suivre
n°184605
j-'-r
Sans horraires fixe
Posté le 28-07-2002 à 00:17:02  profilanswer
 

CorranHorn a écrit a écrit :

dsl de polluer le topic mais sous mozilla ça ne lmarche pas très bien ton code javascript ;)
 
edit : un peu comme ici mais en pire :(  




si si :) le sujet a juste ete deleté => rien apparait niveau messages mais le top et le bottom si :D
 
c est bien ca ?

n°184606
HappyHarry
Posté le 28-07-2002 à 00:24:13  profilanswer
 

ben tu crées des index sur les champs qui font souvent l'objet de recherches

n°184646
j-'-r
Sans horraires fixe
Posté le 28-07-2002 à 09:59:03  profilanswer
 

HappyHarry a écrit a écrit :

ben tu crées des index sur les champs qui font souvent l'objet de recherches




meme come ca ca rame encore :(
 
comme ce forum fait pour rester dans ces temps la avec tant de messages ?

mood
Publicité
Posté le 28-07-2002 à 09:59:03  profilanswer
 

n°184647
CorranHorn
0.300 GFlops/s
Posté le 28-07-2002 à 10:07:29  profilanswer
 

J-'-R a écrit a écrit :

 
meme come ca ca rame encore :(
 
comme ce forum fait pour rester dans ces temps la avec tant de messages ?



Moi j'ai 0.0042 pour le premier lien.


Message édité par CorranHorn le 28-07-2002 à 10:07:42

---------------
A suivre
n°184742
Core 666
Posté le 28-07-2002 à 18:51:56  profilanswer
 

Que donne un EXPLAIN sur la requête qui liste tes sujets ?

n°184770
j-'-r
Sans horraires fixe
Posté le 28-07-2002 à 21:31:59  profilanswer
 

table  type  possible_keys  key  key_len  ref  rows  Extra  
sujets1   ALL   cat            34   where used; Using filesort  


Message édité par j-'-r le 28-07-2002 à 21:33:57
n°184906
Core 666
Posté le 29-07-2002 à 00:36:47  profilanswer
 

Et avec seulement 34 enregistrements parcourus ca rame :??:
 
Je suppose que tu as un LIMIT quelque part dans ta requête. Tu as constaté des temps de génération élevé pour un LIMIT 0,35 ? Ou juste pour un LIMIT x, 35, où x représente l'une des dernières pages de ton forum ?

n°184979
j-'-r
Sans horraires fixe
Posté le 29-07-2002 à 09:36:41  profilanswer
 

j'ai fait un dellete, au debut un il y avait 20 024 enregistrments, et la ca ramais...
 
j ai un limit mais ca rame pour toutes les pages pareilles :(


Message édité par j-'-r le 29-07-2002 à 09:37:26
n°184983
Core 666
Posté le 29-07-2002 à 09:39:22  profilanswer
 

Difficile de te venir en aide sans plus de précisions.
 
Avec la structure de la table et la requête MySQL ce serait beaucoup plus simple. A moins que tu ne veuilles garder tes sources confidentielles ? ;)

n°185010
j-'-r
Sans horraires fixe
Posté le 29-07-2002 à 10:11:22  profilanswer
 

CREATE TABLE sujets1 (
  s_id mediumint(9) NOT NULL auto_increment,
  sujet mediumint(9) NOT NULL default '0',
  titre tinytext NOT NULL,
  nom tinytext NOT NULL,
  dateheure datetime NOT NULL default '0000-00-00 00:00:00',
  date date NOT NULL default '0000-00-00',
  heure time NOT NULL default '00:00:00',
  divers mediumint(9) NOT NULL default '0',
  nommod tinytext NOT NULL,
  ferme tinyint(4) default NULL,
  cat tinyint(4) default NULL,
  vu mediumint(9) NOT NULL default '0',
  sond mediumtext NOT NULL,
  avote text NOT NULL,
  PRIMARY KEY  (s_id),
  KEY cat (cat),
  KEY s_id (s_id),
  KEY date (date),
  KEY heure (heure)
) TYPE=MyISAM;


 

SELECT * FROM sujets1 USE INDEX(date,heure) WHERE cat='1'order by date DESC, heure DESC  limit 0,20


 
j'ai remplacé les var de la requetes par leur premieres valeur :D ( page 1 )
 
si tu peux toujours m aider :D

n°185011
j-'-r
Sans horraires fixe
Posté le 29-07-2002 à 10:12:11  profilanswer
 

je sais bien qu il y a un dateheure et un date et un heure
mis le date et le heure sont sensé bientot disparaitre au profil du dateheure ( on m a conseillé ca :D )

n°185014
The Real M​axou
Posté le 29-07-2002 à 10:15:06  profilanswer
 

Citation :


Note that in some cases MySQL will not use an index, even if one would be available. Some of the cases where this happens are:  
 

  • If the use of the index would require MySQL to access more than 30% of the rows in the table. (In this case a table scan is probably much faster, as this will require us to do much fewer seeks.) Note that if such a query uses LIMIT to only retrieve part of the rows, MySQL will use an index anyway, as it can much more quickly find the few rows to return in the result.  
  • If the index range may contain NULL values and you are using ORDER BY ... DESC



n°185019
Core 666
Posté le 29-07-2002 à 10:20:42  profilanswer
 

Déjà, il y a un gros soucis avec ta requête. En utilisant un ORDER BY DESC, les index ne te sont d'aucune utilité. Une solution pourrait consister à stocker la date de tes messages sous forme de TIMESTAMP inversé (0-TIMESTAMP) afin de faire un ORDER BY ASC. C'est pas super élégant, mais ca marche ...
 
Parce qu'en l'état actuel des choses, si tu as 20.000 sujets dans ta table, c'est 20.000 enregistrements qui sont parcourus à chaque requête, même si c'est pour n'en retourner que 20. Inutile de dire que le classement par date, puis par heure ne fait qu'empirer les choses, mais bon, ca tu vas le corriger :)


Message édité par Core 666 le 29-07-2002 à 10:51:33
n°185025
Core 666
Posté le 29-07-2002 à 10:25:18  profilanswer
 

Autre chose : tu devrais optimiser le type de tes champs. L'impact sur les performances n'est pas énorme, mais c'est toujours ca de prit :) Commence par remplacer les champs mediumint(9) par des mediumint(8) de type UNSIGNED.
 
Le champ ferme se contentera à merveille d'un tinyint(1). Autre chose : tu gagneras en perfs en dissociant tout ce qui concerne les sondages dans une autre table. Laisse juste un champ sondage de type tinyint(1) qui prendra les valeurs 0 ou 1. C'est d'autant plus vrai que tu stockes visiblement la liste des votants dans un champ de type text. Il serait plus intéressant de créer une nouvele table composée de 3 champ (une clefprimaire, une clef s_id et une clef membre_id).

n°185338
Dost67
Posté le 29-07-2002 à 15:19:36  profilanswer
 

Core 666 a écrit a écrit :

En utilisant un ORDER BY DESC, les index ne te sont d'aucune utilité.



Es-tu sûr de ce que tu dis ? Parce que là ça m'intrigue. Dans le post au dessus je vois que c'est seulement quand il y a des champs pouvant être NULL que ce n'est pas utilisé, or les champs de J'R sont NOT NULL.


Message édité par Dost67 le 29-07-2002 à 15:19:53
n°185395
The Real M​axou
Posté le 29-07-2002 à 16:06:16  profilanswer
 

Dost67 a écrit a écrit :

 
Es-tu sûr de ce que tu dis ? Parce que là ça m'intrigue. Dans le post au dessus je vois que c'est seulement quand il y a des champs pouvant être NULL que ce n'est pas utilisé, or les champs de J'R sont NOT NULL.




 
Ou lorsque l'index s'applique sur plus de 30% des enregistrements;)

n°185633
jolly
Posté le 29-07-2002 à 23:08:43  profilanswer
 

tes key sur date et heure -> un seul message par jour et un seul message par heure !!
 
 
fait gaffe a tes clefs !!
CA CHIE !

n°185637
j-'-r
Sans horraires fixe
Posté le 29-07-2002 à 23:16:32  profilanswer
 

si qq1 a l equivalent de nexen.net pour mysql ( sachant que nexen le fait mais ca marche pas chez moi :( )

n°190809
cinocks
Posté le 06-08-2002 à 16:10:31  profilanswer
 

Citation :


tes key sur date et heure -> un seul message par jour et un seul message par heure !!  
 
 
fait gaffe a tes clefs !!  
CA CHIE !


 
Les clés sont bonnes. Pas forcement utiles, mais bonnes!!! Elles n'ont pas de contrainte d'unicité. Les doublons sont donc acceptés.
 
Sinon pour ce qui est de l'order by, celui-ci n'affecte pas les index, puisqu'il n'est traité qu'apres selection des enregistrements conformes à la clause WHERE. Le tri s'effectue sur le resultat, mais necessite de créer une table de travail, ce qui augmente enormement le temps de traitement.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [ PHP / MySQL ] j'ai 20 000 enregistrements et ca rame...

 

Sujets relatifs
MySQL et DSN => HELP...[PHP] Conseil de script à utiliser pour une gallerie photos...
[PHP] Supprimer les \n...[PHP] probleme avec la fonction mail
MySQL, Afficher le nom des champs ![PHP] Recup du nom de la page appelant le script...... [RESOLU]
[PHP]cherche fonction mathematique[MySQL] Pourrait on m expliquer........
[MySQL] Insertion massive d?info SQL situé dans un fichier sur le serv[PHP] Principe des sites de news
Plus de sujets relatifs à : [ PHP / MySQL ] j'ai 20 000 enregistrements et ca rame...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR