排行榜 mysql 表设计_关于用户排行榜数据库设计?

因业务需求现在是需要在原有系统中加入用户排行榜功能。

举个粒子:现在是有个订单表,要通过这个订单表来查询每个用户在一段时间内的总下单数量和支付金额总额,跟据支付总金额来计算排名,页面上是只需要展示前十名,但有个自己的排名位数,就是每个用户进来这个页面都能看到自己的具体排名,不考虑排名一样的情况,这种情况下如何设计数据库或者有什么其他的方法能够更高效的查出当前用户排名及排行榜,目前本人是通过mysql的分组统计查询来得到每个用户的下单总数和支付金额总额并且已经计算出排名,但能想到的是这条sql效率真的非常差,目前能还想到的一个方案是新建一张表保存截止到当天的排行信息,在每天的凌晨通过上面我写的统计sql来更新排行榜表,这样就能做到快速的响应每个用户的排行名次,现在就是想知道有啥更好的解决方案或者表设计,因为现在是只需要月榜,如果数据表设计的太死的话那以后需要周榜年榜就不好做了,希望各路大神不吝赐教!

感谢大神的热心回答,通过各位回答,我明白了要做排行榜功能使用redis的有序集合来做非常合适,但我目前是有个问题就是我需要的排行榜不仅仅是把名次排出来,我还需要把其他的内容也能查出来,就拿上面例子来说吧,通过用户当月的支付总额来排名,但我需要显示的排行榜不仅仅是用户名和支付总额,我还需要在排行榜中显示这个用户的当月的下单数量,redis的有序集合一个是用户id,一个就是用来排名的支付总额,对于这个场景就无能为力吧!难道再用下单数量来维护一个集合,查出排行榜再去集合里面查下单数量?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值