Petit calcul sous MySql / Select

  • Auteur de la discussion Auteur de la discussion finstreet
  • Date de début Date de début
WRInaute accro
Hello

Suis en train de chercher aussi sur d'autres forums mais pour l'instant j'ai pas trouvé de solus' valable.

Bref, j'ai une table 'historique' qui se constitue ainsi :
Code:
ID
Membre
Date
Fortune

J'aimerais pouvoir calculer automatiquement pour tous les membres l'évolution de la fortune entre une date n et n-1 ... dates qui correspondent en fait à la dernière entrée et l'avant dernière entrée.

Si qqun a une piste :)
 
WRInaute impliqué
as-tu essayé en declarant deux fois la table, un truc du genre :
Code:
select Membre, (t1.fortune - t2.fortune) as resultat
from latable as t1 , latable as t2
where t1.date = date1 AND t2.date = date2
and t1.Membre=t2.Membre
and t1.ID<>t2.ID
?
[mode discret]j'ai pas testé en fait je sais du tout si ca marche :lol: [/mode]
 
WRInaute accro
Bon alors déjà bonne nouvelle... ca marche :)

Mais pas de bol... le ORDER by resultat DESC ... ben là c'est la cata... on passe de 0,3 à plus de 8 secondes
 
WRInaute accro
ben en fait je viens de m'apercevoir que c'était une table à 850.000 lignes... ca doit pas aider

Bon sinon j'ai créé une table temporaire pour récupérer la variation... variation que je rebalance ensuite via un update dans la table d'origine... après le order ne pèse plus rien forcément ... mais bon c'est assez ... lourd
 
WRInaute occasionnel
Je te conseille personnellement de rajouter un champs "variation_fortune" dans ta table personne et de calculer la nouvelle valeur à chaque connexion du membre en question.
Gain de perf assuré :)

C'est ça aussi le cache....
 
WRInaute accro
sauf que vu le "système"... je ne peux pas recalculer à chaque connexion... d'une part parce que le joueur peut ne pas venir pdt plusieurs jours mais sa progression est là tout de meme... de +, parce que sa "fortune" prend en compte de nombreux paramètres et que c'est assez lourd à calculer une seule fois déjà :) de + ca peut évoluer environ toutes les secondes :)

Sinon j'ai balancer une requete globale qui met à jour une colonne Variation... une fois par jour ... et ensuite je tape dans cette colonne pour afficher le classement ... par contre la mise à jour de cette colonne me prend 40 secondes lol
 
Discussions similaires
Haut