即大数据量的排序问题,如下:
求大于一亿条数据量的前十的排名,也就是将这大于一亿条的数据按降序排列,然后取前十条。
本人目前有个大致的思路,但并未测试,希望大家集思广益,给点建议
先求所有这些数据的平均值,然后再求所有大于平均值的数据的平均值,这样递归下去,直到最后过滤剩下最后十个数据为止,然后再order by一下。
这个方案目前只属于理论讨论阶段,在此算是抛砖引玉吧,谢谢大家的宝贵意见。
本人目前有个大致的思路,但并未测试,希望大家集思广益,给点建议
先求所有这些数据的平均值,然后再求所有大于平均值的数据的平均值,这样递归下去,直到最后过滤剩下最后十个数据为止,然后再order by一下。
这个方案目前只属于理论讨论阶段,在此算是抛砖引玉吧,谢谢大家的宝贵意见。
可以这样。 把1亿条数据分成n分。 然后分别取这n份里的前10。 最后在将刚才取到的前10这些放到以前。
再取前10 ,当然这也是个递归的过程。 这样对于多线程,多cpu的机子会更好点。