1
loading 2014-03-13 18:28:05 +08:00 1
select 姓名 from 表 order by 积分,另一个属性
|
2
huwewa 2014-03-13 18:30:05 +08:00
可以参考云风写的 [谈谈陌陌争霸在数据库方面踩过的坑(排行榜篇)](http://blog.codingnow.com/2014/03/mmzb_db_2.html)
|
3
huwewa 2014-03-13 18:31:01 +08:00
:( 回复不支持md?
|
5
yueyoum OP |
7
guoxx_ 2014-03-13 20:48:22 +08:00
10W级别的用户完全可以把这部分数据缓存在内存中,根据自己的算法做排序。完全不依赖于数据库。
服务启动的时候排一下序就可以了。 如果a属性重复的可能性比较小,用a属性做二叉树排序。 更复杂的算法就需要具体业务具体分析了。 |
8
pubby 2014-03-13 23:42:12 +08:00
|
9
thwawar 2014-03-13 23:45:03 +08:00
首先,应该把数据全放内存里。MySQL的大部分存储引擎中索引的数据结构都是基于B树的,但是B树是面向磁盘的数据结构,内存里的应该用二插树来做,为了防止最坏情况出现,所以要用自平衡的二叉树比如红黑树来实现。
|
10
yueyoum OP 前几天忙其他事情, 昨天才把这个弄完了。
见 APPEND |
11
mouer 2014-03-19 11:28:37 +08:00
其实吧,没有那么麻烦,参见码农第一期,我们用的是树形分区设计
|
12
yueyoum OP 啊, 其实我做完后突然发现其实是没用的。
既然我的 lua script 已经默认了 是定时统计排名 那么完全只用记录用户的积分,然后定时取出全部用户,再在python中直接排序就行………… too young too simple ... |