具有玩家等级的快速mySQL排行榜(及周边玩家)

时间:2011-03-03 09:42:05

标签: mysql

我正在制作一个简单的游戏,具有排行榜功能(mySQL / PHP)。

游戏结束时:

  1. 到服务器:玩家的分数
  2. 从服务器:服务器,玩家的等级PLUS 5 球员直接在上面&在他们之下 排名
  3. 我并不特别相信该服务器会处理预期的玩家流量 - 所以我想这样做。

    以下哪种方法可行(并且速度最快)?

    • 改变表? (经常修改表格时速度慢吗?如何获得排名?)
    • 带ORDER BY的简单行(等级)计数器? Example
    • 使用WHERE子句的简单行(排名)计数器更快? Example

    或者我错过了更好的解决方案?

1 个答案:

答案 0 :(得分:5)

ALTER TABLE
ALTER TABLE是改变表格的结构 当你犯了错误或者你已经改变了对如何做事的想法时,你就会使用它 如果你不知道它做了什么,不要使用它。

<强> INDEX
INDEX是排序更快始终为您在WHERE子句或{{1}中定期使用的列分配索引条款。
您可以排序并选择没有索引的精简,只需更慢。

<强> RANKING
如果你想列出最高排名的球员,那么:

ORDER BY

将为您提供前25名高分球员,最高分(按逆序排序 SELECT field1, field2, ... FROM players ORDER BY score DESC LIMIT 25 从高到低)

FANCY RANKING

DESC

哦,阅读基本的SQL内容 Google为SELECT @rank:= 0; -- <<-- First run this query! SELECT @rank:= @rank + 1 as rank, s.* FROM ( SELECT field1, field2, ... FROM players ORDER BY score DESC LIMIT 25 ) s; --<<-- than this one.

祝你好运。