精华帖 (1) :: 良好帖 (0) :: 新手帖 (11) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-30
偶然看到这个题,就想了一下怎么做,大体实现思路是这样子的,3000w的数据划分为1000段,也就是1-3w为一段,30001-6w项为第二段,依次类推,从每3w的数据中提取出前50条数据(这个根据sql排序就能取出来,2个g的内存够了),最后1000个50就会产生5w个数据,最后提取出来的5w的数据放置到ArrayList中去,最后5w的数据统一排序,取出前50条。5w*5w的对比与交换是可以搞定的。具体实现,等最近的项目完了 用多线程试试!~ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-10-01
想了一下,5w的数据放在int数组里用Arrays.sort()方法排下来就可以了。
|
|
返回顶楼 | |
发表时间:2009-10-01
按排序字段做多级索引
|
|
返回顶楼 | |
发表时间:2009-10-01
kimmking 写道 按排序字段做多级索引
可以具体点么? 我对这个小看了 ~~ |
|
返回顶楼 | |
发表时间:2009-10-01
3000w的表的话,如果要排序的那一列可以做index的话,做个index就好了,如果能做cluster index(SQLServer的功能)做个cluster index,select 一下也不会很慢的。 如果不能做这种index的话排序也没有意义的(但是仍然可以用fulltext search)
ps: 3000w级别的表还好,如果再大上一两个数量级,我就没有见过了。 |
|
返回顶楼 | |
发表时间:2009-10-01
这是阿里巴巴最后的压轴题吧
|
|
返回顶楼 | |
发表时间:2009-10-01
也不知道该怎么回答你,阿里巴巴一面要求不要泄题,另一面网上又有人要来讨论,这个题,楼主把我的意思理解错了,3000W的数据要在内存中解决,不能放在数据库中,否则,它还要你写什么算法呀。直接分表不就得了,这是在DBA要解决的问题,不是程序员的事情了。
|
|
返回顶楼 | |
发表时间:2009-10-01
xinggm 写道 也不知道该怎么回答你,阿里巴巴一面要求不要泄题,另一面网上又有人要来讨论,这个题,楼主把我的意思理解错了,3000W的数据要在内存中解决,不能放在数据库中,否则,它还要你写什么算法呀。直接分表不就得了,这是在DBA要解决的问题,不是程序员的事情了。
3000w的数据 放不下啊~!2g的内存 |
|
返回顶楼 | |
发表时间:2009-10-01
b5158488 写道 这是阿里巴巴最后的压轴题吧
嘿嘿 是的 |
|
返回顶楼 | |
发表时间:2009-10-01
原体的描述是什么样子的呢?
|
|
返回顶楼 | |