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

sureau

WRInaute discret
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... :)
 

bigjet

WRInaute discret
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.
 

Discussions similaires

Haut