Page 1 sur 1

Optimisation: foreach() ou requête ?

Posté : 10 oct. 2011, 16:22
par Zahnzao
Bonjour,

j'aurai juste quelques petites questions, niveau optimisation.

Pour résumer j'ai 3 tables:

elements
categories
tags

Un élément peut contenir une seule catégorie mais plusieurs tags.

Voici comment j'ai procédé:

Toutes mes pages sans exceptions utilisent mes 3 tables. Donc pour économiser des requêtes j'initialise 3 tableaux en début de script qui contiennent l'intégralité de mes 3 tables. Ensuite j'effectue mes tests sur ces tableaux. Par exemple si je veux récupérer une seule ligne d'une de mes table je dois "foreach" le tableau alors qu'une requête supplémentaire me sort le même résultat.

Première question: Est-ce plus optimisé comme cela ou la requête est mieux ?

Ensuite, j'utilise la fonction serialize() pour insérer les résultats de mes checkbox (issus de ma table tags) dans ma table 'éléments'. Avec mon système actuel, pour tester la présence de tags dans ma table éléments, je dois faire un double foreach sur mes tableaux elements et tags afin de tester chaque ligne.

Deuxieme question: Même affaire, c'est mieux comme ça ou une simple requête avec like est plus optimisée ?

J'avais voulu bien faire en optimisant les requête, mais je me demande si au final, il ne vaut pas mieux faire quelques requêtes supplémentaires...

Merci.

Re: Optimisation: foreach() ou requête ?

Posté : 10 oct. 2011, 16:30
par Mazarini
Bonjour,

Eventuellement, tu pourrais mettre l'identifiant de l'élément dans la clé des tableaux, tu aurais un accès plus simple.

L'idée de stocker dans des tableaux n'est pas mauvaise dans la mesure ou tu ne charges pas trop d'éléments.

Re: Optimisation: foreach() ou requête ?

Posté : 10 oct. 2011, 16:44
par Zahnzao
Salut et merci de ta réponse.
L'idée de stocker dans des tableaux n'est pas mauvaise dans la mesure ou tu ne charges pas trop d'éléments.
Justement c'est bien cela qui me fait réfléchir, aujourd'hui la table est vide puisqu'en développement, mais lorsque le site sera déployé... Elle risque fort de se remplir assez vite.

Il faut absolument que je revois ça...

Re: Optimisation: foreach() ou requête ?

Posté : 11 oct. 2011, 14:58
par Yosh
Salut et merci de ta réponse.
L'idée de stocker dans des tableaux n'est pas mauvaise dans la mesure ou tu ne charges pas trop d'éléments.
Justement c'est bien cela qui me fait réfléchir, aujourd'hui la table est vide puisqu'en développement, mais lorsque le site sera déployé... Elle risque fort de se remplir assez vite.

Il faut absolument que je revois ça...
Du moment ou tes données ne sont pas statiques et que tu ne connait pas le nombre exact, je te conseillerais plutôt le choix de la requête.