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

  FORUM HardWare.fr
  Programmation
  PHP

  [Php/Mysql/Tableaux] Optimisation d'un code

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Php/Mysql/Tableaux] Optimisation d'un code

n°737575
Sebastien
Posté le 25-05-2004 à 13:05:36  profilanswer
 

Contexte : extraction de données provenant de plusieurs tables vers un fichier plat.
 
Je dois donc extraire des données de plusieurs tables vers differents fichiers plats apres avoir retraité les informations
 
Un exemple concret


mysql> desc arbo_domaines;
 
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| id            | int(11)          |      | PRI | NULL    | auto_increment |
| id_parent     | int(11)          |      | MUL | 0       |                |
| niveau        | set('0','1','2') |      |     |         |                |
| position      | int(4)           |      |     | 0       |                |
| libelle       | varchar(255)     |      |     |         |                |
| particulier   | enum('O','N')    |      |     | N       |                |
| professionnel | enum('O','N')    |      |     | N       |                |
+---------------+------------------+------+-----+---------+----------------+
7 rows in set (0.03 sec)


Environ 320 enregistrement, c'est un arbre.
 


mysql> desc reclamation;
+-----------------------+-------------------
| Field                 | Type                                                                        
+-----------------------+--------------------
| id_reclamation        | varchar(20)    
| id_annuaire           | varchar(6)    
| id_domaine            | varchar(3)
 


Environ 100000 champs
 
Et je dois donc recuperer le domaine de cette facon

Citation :


Position (sur 2 caractères) 0000 quand id_parent=0 et niveau =0
Parent (sur 2 caractères) Position (sur 2 caractères) 00 quand niveau = 1
Parent1 (sur 2 caractères) Position1 (sur 2 caractères)  Position (sur 2 caractères) quand niveau = 2 (parent=id1)


 
Donc je procedais de cette facon :
je cherchais le domaine dans la table et si le niveau etait 2 je refaisais une requete pour aller chercher son pere.
Et ca à chaque enregistrement de reclamations.
 
je me suis dis qu'en terme de perf c vraiment pas bon vu que j'avoisine les 150.00 requetes.
D'ou l'idée de mettre des le depart la table arbo_domaines dans un tableau et donc de lire directement les informations dedans.
Juste une requete à faire au chargement de l'application et ca va.
 
Mais voila jusqu a quel niveau c'est plus performant ?
La je vais le faire pour deux tables de 22 et 350 lignes, donc aucun soucis.
Mais j'ai des tables à 10 000 lignes + est ce aussi rentable de les charger dans un tableau une premiere fois au lieu d'aller taper dedans à chaque fois ?.
 
Ps : je peux pas faire de requete sur plusieurs tables, vu que c souvent de cardinalité (0,1) ou (0,n) et donc oblige de faire des left join un peu partout, ce qui risque de bien plomber les performances MySQL
 
j'aimerais avoir vos avis en esperant avoir ete assez clair.


Message édité par Sebastien le 25-05-2004 à 13:09:09
mood
Publicité
Posté le 25-05-2004 à 13:05:36  profilanswer
 

n°737600
Sebastien
Posté le 25-05-2004 à 13:32:15  profilanswer
 

Bon alors premier test avec la table de 20 enr, et 340 enr.
 
Je passe d'un script de 0.45 secondes, à 0.08 secondes.
Plus pas mal les performances

n°738215
Beegee
Posté le 25-05-2004 à 18:09:53  profilanswer
 

s'il y a une table à laquelle tu accèdes de nombreuses fois (plusieurs milliers de fois), toujours de la même façon, et qu'elle contient quelques milliers de lignes, alors oui, ça vaut le coup de la mettre en cache (i.e. dans un tableau).
 
Il faut aussi avoir un moyen rapide d'accéder aux données du tableau (hash par exemple), et ne pas avoir à parcourir tout le tableau pour trouver l'info intéressante.


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

  [Php/Mysql/Tableaux] Optimisation d'un code

 

Sujets relatifs
Doc PHP problème [Résolu]mysql ne veut plus démarrer
Moteur de recherche en PHP surun DOC XML[PHP] Forward declaration ?
[MySQL] Classement numérique[PHP] Chercher un caractère dans une chaine... Quel fonction ?
Générer un fichier xml à partir d'un xsd via php ?comment faire apparaitre 1 code dans 1 page html
PRoblème de config PHP[PHP] - Décomposer les chiffres d'une année (-> résolu <-)
Plus de sujets relatifs à : [Php/Mysql/Tableaux] Optimisation d'un code


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