游戏服务器开发:简单排行榜功能问题,基于mysql

泪湿孤枕 提交于 2020-02-21 18:49:55

最近在找工作,本人还是希望回游戏行业的,投了半天抓到一个面试机会,面试题是一个游戏排行榜功能,其中只需要客户端id,分数这两个字段。
我看到这个题的时候心想简单的一批,就没细想可能会出现的一些问题, 查了一下django的文档就开始一把梭,建立一张表,客户端id,分数两个字段。
查询排行榜指定的位次段:

select id,score from user_score order by score desc limit %v1%,%v2%;

当然,当时是用django的orm写的

models.score.objects.all().order_by('-score')[rank_begin:rank_end]

问题来了:

问:如何获取到客户端本身的位次?
当时没用脑子的我想的是取出所有数据,排序后去遍历获得客户端的index

问:当数据量非常大的时候,怎么办?
答:建索引

然后问了一些mysql相关的知识

果不其然被拒了!!

现在想想,在查询客户端本身的位次时,我是有客户端的分数的,即我可以通过这个分数,来查出来比当前分数大的有多少客户端,再+1,就是客户端的排名了。

select count(*) from user_score where score >= %score%;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!