我正在开发一个有很多用户的网页游戏。在主屏幕上将有一个带有许多标记的地图。每个标记都链接到一个用户,每个用户在我想要显示的排名(用他们的点计算)中有一个位置。
要动态计算排名的位置,请从here找到以下内容:
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加载标记时)。另一个选择是每次用户玩游戏时,当然,修改他的总点数,数据库中的每个用户都会更新数据库中假设的“等级”字段。
答案 0 :(得分:0)
不可能说哪一个会更有效率。它完全取决于points列的更新次数,表中的记录总数以及排名请求的数量。如果您知道这些数字或者您可以做出好的猜测,请使用随机测试数据对其进行基准测试。如果你做不到,那就选择最容易实现的解决方案,如果它成为一个问题就改进它。