1

我正在开发一个有很多用户的网页游戏。在主屏幕上会有一张带有许多标记的地图。每个标记都链接到一个用户,每个用户在我想要显示的排名(用他们的分数计算)中都有一个位置。

要动态计算排名的位置,请从这里找到以下内容:

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 加载标记时)。另一种选择是,每次用户玩游戏时,当然,修改他的总点数,数据库中假定的“排名”字段将为数据库中的每个用户更新。 在此处输入图像描述

4

1 回答 1

0

不可能说哪一个会更有效率。这完全取决于对点列的更新次数、表中的记录总数以及排名请求的数量。如果您知道这些数字,或者您可以做出很好的猜测,请使用随机测试数据对其进行基准测试。如果不能,请使用最容易实施的解决方案,并在它成为问题时对其进行改进。

于 2012-07-04T13:55:34.537 回答