使用MySQL(或任何SQL)在多个游戏中排名靠前

使用MySQL(或任何SQL)在多个游戏中排名靠前,mysql,leaderboard,Mysql,Leaderboard,好奇用SQL数据库在多个游戏中实现排行榜最优雅的方式是什么 我有游戏G1,玩家在那里得到不同的分数(从0到100) 我有游戏G2,玩家也会得到不同的分数(但从0到1000) 我有G3游戏,玩家也会得到不同的分数(从1000到10000) 可能是共享玩家(但不是必需的) 我如何实现排行榜,这样我就可以在所有游戏中显示排名前5位的玩家,而不会因为大量的SQL查询而扼杀我的数据库?我所说的是成百上千的请求/秒进入排行榜 我几乎没有自己的想法,但它们似乎都不够优雅和简单…一种方法是将“排名”放在mem表

好奇用SQL数据库在多个游戏中实现排行榜最优雅的方式是什么

我有游戏G1,玩家在那里得到不同的分数(从0到100) 我有游戏G2,玩家也会得到不同的分数(但从0到1000) 我有G3游戏,玩家也会得到不同的分数(从1000到10000)

可能是共享玩家(但不是必需的) 我如何实现排行榜,这样我就可以在所有游戏中显示排名前5位的玩家,而不会因为大量的SQL查询而扼杀我的数据库?我所说的是成百上千的请求/秒进入排行榜


我几乎没有自己的想法,但它们似乎都不够优雅和简单…

一种方法是将“排名”放在mem表中,并以1x/sec的速度进行更新。然后查询“显示排行榜”页面。这样,您的服务器将只查询1x/秒的游戏排名。对“排行榜”表的查询无论如何都将来自内存,并且通常来自查询缓存(如果已启用)

因为standings是一个派生表,所以没有任何理由将其写入磁盘


哦-照@bestprogrammerintheworld说的做-重用你的连接。

在这样一个聚合排行榜中,一个玩家的排名高于另一个玩家意味着什么?他们的总分更高?他们的平均分数更高?他们的标准化分数之和更大?还有别的吗?持久的数据库连接,所以使用的编程语言不必反复打开数据库。