Mysql - Récupérer des valeures de requetes récursives


sureau
WRInaute discret
WRInaute discret
 
Messages: 195
Inscription: 7 Mar 2005

Mysql - Récupérer des valeures de requetes récursives

Message le Lun Mai 21, 2007 19:06

Pour un de mes sites, je dois faire une somme d'enregistrements en fonction de requetes récursives. J'y parviens avec des boucles, mais je souhaiterais optimisé le tout (histoire d arreté de tuer mon serveur avec des petits add on gourmant).

Donc le problème est celui ci
J'ai une table catégorie avec 3 champs
id_categorie
nom_fr
categorie_parent

Ainsi les catégories peuvent avoir un niveau infini de niveau si categorie_parent = id_categorie d une autre catégorie afin d'obtenir une arborescence comme ceci
Accueil / Commerces / boulangerie / rhones alpes etc...
je voudrais que sur commerces par exemple je connaisse le nombre d'enregistrements contenu dans commerces, boulangerie, rhones alpes etc...

A part faire une boucle récursive sur toutes les catégories d'une catégorie parent donnée, suivi d'une requete sur chacune des catégories pour obtenir le nombre d enregistrements, je ne vois pas comment faire (et vu le nombre de catégories , j obtiens vite 200 à 300 requetes de plus par page (contre une 15 aine sans le script))

Alors c est sous mysql, si quelqu'un à une piste... :)

NextGeneration
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 428
Inscription: 27 Sep 2006

Message le Lun Mai 21, 2007 19:19

Une requete préparée + une procédure stockée devraient faire l'affaire... en utilisant PDO.

bigjet
WRInaute discret
WRInaute discret
 
Messages: 211
Inscription: 21 Nov 2004

Message le Lun Mai 21, 2007 21:18

Une méthode que je te conseilles pour ton cas c'est de rajouter un champ dans ta table dans lequel tu stockes tout le chemin vers une catégorie. (Accueil / Commerces / boulangerie / rhones alpes) Tu peux aussi ajouter un champs qui contient le nombre de fils pour chaque catégorie.

Lorsque tu mettras à jour ces champs, t'auras besoin d'utiliser la récursivité pour bâtir les chemins et faire le calcul du nombre de fils, mais comme le ratio (Mise à jour)/(Pages consultées) est infime, tu gagneras énormément en performance.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité