我正在开发一个有很多用户的网页游戏。在主屏幕上会有一张带有许多标记的地图。每个标记都链接到一个用户,每个用户在我想要显示的排名(用他们的分数计算)中都有一个位置。
要动态计算排名的位置,请从这里找到以下内容:
SET @rownum := 0;
SELECT rank, points FROM (
SELECT @rownum := @rownum + 1 AS rank, points, uid
FROM landings ORDER BY points DESC
) as result WHERE uid=xxxxxxxx
但是每次玩家将地图移动到未探索区域时,都会为加载到地图的每个新标记触发此查询。
另一方面,如果每次玩家完成游戏时,我都会为数据库中的每个用户更新一个排名字段怎么办?当然,这听起来很大,但这种情况比其他情况少。你怎么看?更新比选择效率低得多?多少?
感谢您的帮助!
编辑以获取更多说明:此图显示了屏幕。有一张带有很多标记的地图,对于屏幕中的每个标记,都会触发我之前解释的查询(当我通过 AJAX 加载标记时)。另一种选择是,每次用户玩游戏时,当然,修改他的总点数,数据库中假定的“排名”字段将为数据库中的每个用户更新。