28-03-2017, 03:13 PM
(Modification du message : 28-03-2017, 03:52 PM par Keltaïnen.
Raison de la modification: Info périmée
)
(28-03-2017, 03:07 PM)Xenos a écrit :Citation : tant que tu as un rand() individuel à appliquer, tu auras forcément un update par personnage.Pas nécessairement. Là, si j'ai bien compris, l'idée est de donner de la nourriture au pif. Cela peut se faire en rajoutant une colonne (dans une temp table ou dans la table de population) indiquant la "priorité d'accès aux ressources". Cette colonne peut être alors remplie par un RAND, ou par l'utilisateur. Il suffit ensuite de faire son ORDER BY sur cette colonne pour attribuer les ressources à chaque tranche de population.
Oui mais ça ne change pas le fait qu'à un moment il faut faire un "update personnage set nimporte_quel_champ = RAND() where id = <id>" et qu'on ne peut pas se passer du "where" car le RAND() est calculé une seule fois par requête.
Après on peut effectivement déporter le calcul du RAND() au niveau du joueur. Par exemple il est recalculé pour toute sa population à chaque fois qu'il se connecte. On aura alors 160 requête d'un coup (pour l'exemple donné) mais on soulagera le traitement global qui attribut les ressources.
[edit]
Je viens de tester sur un MySQL 5.7, le RAND() est maintenant appliqué individuellement sur chaque ligne lors d'un update donc on se casse les pieds pour rien, à ce niveau là du moins.
Keltaïnen