JeuWeb - Crée ton jeu par navigateur
faire une grosse requete ou plusieurs petites ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : faire une grosse requete ou plusieurs petites ? (/showthread.php?tid=5205)

Pages : 1 2


faire une grosse requete ou plusieurs petites ? - php_addict - 29-01-2011

bonsoir

j'ai une question toute bête:

sur chaque page de mon projet je récupère des données de la base mysql, jusqu'à là tout est normal. La majorité des pages de mon projet récupèrent les mêmes infos (données récurrentes)

je me suis aperçu que ce que j'avais fais il y a un an était de faire plusieurs requêtes par pages qui peuvent être faitent en une seule avec des jointures LEFT JOIN

j'en viens donc à ma question:

vaut il mieux faire une grosse requête avec des LEFT JOIN ou plusieurs petites sans jointure?

j'entends par "grosse requête" non pas le volume de données récupéré mais le nombre de jointures (4 ou 5 jointures sur des tables indexées correcement).

je serais tenté de dire "vive les jointures" mais je voudrais en avoir le :love2: net si vous le permettez avant de modifier une bonne partie des mes contrôleurs...

bonne nuit pour ceux qui dorment...


RE: faire une grosse requete ou plusieurs petites ? - srm - 30-01-2011

Ca dépend du volume :'D
Il faut tester au cas par cas

Tant que tu peux faire des jointures, fait le, si tu commences à avoir des problèmes de performances là on peut en parler :]


RE: faire une grosse requete ou plusieurs petites ? - php_addict - 30-01-2011

le volume ne sera pas énorme je pense mais je risque de récolter des infos qui ne serviront pas tout le temps dans le but de ne faire qu'une seul requête


RE: faire une grosse requete ou plusieurs petites ? - atra27 - 30-01-2011

Si c'est des informations chargées souvent (si j'ai compris dans ton cas c'est a chaque page), laisse le cache de mysql faire le boulot...


RE: faire une grosse requete ou plusieurs petites ? - php_addict - 30-01-2011

(30-01-2011, 11:26 AM)atra27 a écrit : Si c'est des informations chargées souvent (si j'ai compris dans ton cas c'est a chaque page), laisse le cache de mysql faire le boulot...

oui effectivement...mais si je peut faire une seule c'est encore mieux non ?


RE: faire une grosse requete ou plusieurs petites ? - niahoo - 30-01-2011

tu as fait des tests ?


RE: faire une grosse requete ou plusieurs petites ? - php_addict - 30-01-2011

(30-01-2011, 02:14 PM)niahoo a écrit : tu as fait des tests ?

non, difficile...je vois pas comment faire les test sur ce sujet...


RE: faire une grosse requete ou plusieurs petites ? - atra27 - 30-01-2011

(30-01-2011, 01:46 PM)php_addict a écrit : oui effectivement...mais si je peut faire une seule c'est encore mieux non ?

Justement, c'est la que je voulais en venir! Mysql mettra en cache une seule requete au lieu de plusieurs! Ce que signifie un seul accés a la bdd donc forcément un gain de ressources.

Maintenant je pense pas que la différence soit notable...


RE: faire une grosse requete ou plusieurs petites ? - niahoo - 30-01-2011

bah tu remplis tes tables avec des données bidons pis tu lance un script qui appelle ta page 1 000 000 fois en une minute et tu stockes le temps de génération de chaque page pour en tirer une moyenne (pas dans mysql sinon tu niqueston test)

et tu recommences avec l'autre méthode de requete.

Et tu recommences le tout plusieurs fois en inversant l'ordre histoire d'être sur.


RE: faire une grosse requete ou plusieurs petites ? - php_addict - 30-01-2011

merci pour vos avis

j'ai passé la journée à modifier mes contrôleurs en générant un array() $META_info regroupant la majorité des données nécessaires pour le contrôleur et en ne faisant qu'une requête avec tout plein de jolies jointures (c'est pas énorme, juste 8 ou 9 jointures environs...)

vous l'aurez compris je suis dans une phase d'optimisation et surtout de restructuration de mes contrôleurs et de mes modèles et je me permet un petit hors sujet...ais-je le droit sur mon propre topic ? :

sur chacun de mes contrôleur il y a un appel à une fonction qui met à jour le champs joueur.last_time_view par le timestamp actuel ce qui permet de connaitre le statut du joueur (actif ou inactif et depuis combien de temps)

le soucis c'est que cela fait un UPDATE par page et je trouve ca lourdingue...ne faut il pas mieux mettre ca en SESSION et ne faire l'UPDATE que toutes les 5 minutes par exemple ? ca fait moins d'écriture sur la base de donnée. car étrangement cette UPDATE me prends pas mal de temps (environ 10ms en local avec wamp avec les bon indexes de tables, en mutu sur ovh c'est moins pire mais quand même...)

un dernier petit conseil? UPDATE systématique ou jonglage avec les SESSIONS? cela n'arrange peut être pas le problème mais notez que mes sessions sont stockées en base de donnée (cf http://php.net/manual/fr/function.session-set-save-handler.php )

encore merci à vous, bonne fin de soirée