gpt4 book ai didi

mysql - 需要帮助进行玩家评分计算的数据库/查询设计

转载 作者:行者123 更新时间:2023-11-29 14:43:46 25 4
gpt4 key购买 nike

我有一个游戏,每轮玩家都会获得奖励,并按总奖励计算评级。我使用这样的模式:

1)表game_result(user_id,prize,game_date)用于单独存储游戏结果(我需要它来进行统计)

2)表评分(user_id,total_prize,total_games)用于存储评分数据,并且total_prize、total_games值在每场比赛结束时更新

3)我需要快速找到用户的总奖金和评级位置(以在游戏过程中显示)。现在我使用这种查询的一种

SET @rank=0;
SELECT @rank:=@rank+1 AS rank, user_id, total_prize, total_games FROM rating order by total_prize where user_id = ?

但它对每个查询都采用评级表,并且速度太慢。问题是,在每场比赛之后,只有单个玩家的一行发生变化(带有total_prize、total_games),但要找到他的新订单位置,我需要诉诸整个表,并且性能不可行。

是否可以重新组织表以提高此操作的性能?

谢谢!

最佳答案

SELECT COUNT(*)
FROM rating
WHERE total_prize <= (SELECT total_prize FROM rating WHERE user_id = ?)

(或者进行单独的查询并获取用户的total_prize,加上您需要的其他列,然后对其进行计数。)

当然,请确保在total_prize上有一个索引。

(您可能需要 >= 来代替,具体取决于您所说的排名的含义。)

关于mysql - 需要帮助进行玩家评分计算的数据库/查询设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7442253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com