【发布时间】:2011-09-16 08:51:28
【问题描述】:
我有一个游戏,每轮玩家都会获得一个奖品,并计算总奖品的评分。 我使用这样的架构:
1) 表 game_result (user_id, Prize, game_date) 用于单独存储游戏结果(我需要它用于我的统计)
2) 表 rating(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),但是要找到他的新订单位置,我需要使用整个表,并且性能不可行。
是否可以重新组织表以提高此操作的性能?
谢谢!
【问题讨论】:
标签: mysql database performance database-design query-optimization