na los, da chrisnew bewiesen hat, dass es hier noch quallitative beiträge geben könnt, post ich das problem mal mit hier
heyho,
ich hab ein kleines spiel laufen, wo man sich durch klicks sessions unterschiedlicher länge sichern kann. man muss sozusagen zeitspannen sammeln und diese werden zu statistiken aufaddiert.
ich hab jetzt eine tabelle wo alle zeitspannen eingetragen sind.
dabei gehts vorallem um die spalten:
an daten brauch ich jetzt zu jedem user die gesammtzeit, die er erspielt hat, die wird zu dem user gespeichert. es gibt also in der usertabelle eine timesum spalte.
allerdings möchte ich gerne noch die durchschnittszeiten für den benutzer haben.
der komplette query sieht so aus:
SELECT
user.user,user.time_sum,max(resets.time) as last,
(SELECT
AVG(time_diff)
FROM
resets
WHERE
user_id = user.id
AND
added = 1
) as avg
FROM
resets
INNER JOIN
user
ON
resets.user_id = user.id
GROUP BY
user.id
ORDER BY
time_sum
DESC
Alles anzeigen
durch den subquery wird das ganze jetzt aber ziemlich langsam, bei 13k datensätzen brauch ich fast 2 sekunden dafür. (die benutzertabelle hat ca. 200 einträge)
wie bekomm ich jetzt nen durchschnittswert effizienter berechnet. mein plan war, dass ich die avg() bei jedem klick bilde, aber das braucht ja dann auch wieder viel performance, ich glaube da erhalt ich keinen großen vorteil.
jemand hinweise, wie man sowas optimieren kann?