实现一个排行榜显示当前我的排行名次,还有我前5名和我后5名;数据量几十万,用mysql,按表里一个score字段排序,怎么sql才没有效率问题?
数据量几十万,用mysql,按表里一个score字段排序……查一次吐一次,光是磁盘IO就够你受的了,根本轮不着再考虑SQL查询效率。冷数据倒是不用考虑性能问题,我猜你这是热数据。别用mysql查了,换redis把,一个SortedSet轻松搞定。
这样子的话,在sql层面上已经解决不了效率问题了吧
导出数据,用编程语言实现快速排序算法,不能指望SQL连各种各样的排序算法都高效实现好,拿来就用。
这个话题有点意思,不过你的问题够全吗?因为数据量几十万,如果只以分数排序,那绝大部分人可能分数一样啊,即使分数高达几百万,可能前5名,后5名都是一样的分数。
比如现在腾讯系的那些游戏,都是在朋友圈子里排名的,这就是另外一个问题了,很有技术含量啊
数据量几十万,用mysql,按表里一个score字段排序……查一次吐一次,光是磁盘IO就够你受的了,根本轮不着再考虑SQL查询效率。
冷数据倒是不用考虑性能问题,我猜你这是热数据。别用mysql查了,换redis把,一个SortedSet轻松搞定。
这样子的话,在sql层面上已经解决不了效率问题了吧
导出数据,用编程语言实现快速排序算法,不能指望SQL连各种各样的排序算法都高效实现好,拿来就用。
这个话题有点意思,不过你的问题够全吗?因为数据量几十万,如果只以分数排序,那绝大部分人可能分数一样啊,即使分数高达几百万,可能前5名,后5名都是一样的分数。
比如现在腾讯系的那些游戏,都是在朋友圈子里排名的,这就是另外一个问题了,很有技术含量啊