论坛首页 Java企业应用论坛

3000w数据的表,取某项字段前50项数据 ,内存2g

浏览 21779 次
精华帖 (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的对比与交换是可以搞定的。具体实现,等最近的项目完了 用多线程试试!~
   发表时间:2009-10-01  
想了一下,5w的数据放在int数组里用Arrays.sort()方法排下来就可以了。
0 请登录后投票
   发表时间:2009-10-01  
按排序字段做多级索引
0 请登录后投票
   发表时间:2009-10-01  
kimmking 写道
按排序字段做多级索引

可以具体点么?
我对这个小看了
~~
0 请登录后投票
   发表时间:2009-10-01  
3000w的表的话,如果要排序的那一列可以做index的话,做个index就好了,如果能做cluster index(SQLServer的功能)做个cluster index,select 一下也不会很慢的。 如果不能做这种index的话排序也没有意义的(但是仍然可以用fulltext search)

ps: 3000w级别的表还好,如果再大上一两个数量级,我就没有见过了。
0 请登录后投票
   发表时间:2009-10-01  
这是阿里巴巴最后的压轴题吧
0 请登录后投票
   发表时间:2009-10-01  
也不知道该怎么回答你,阿里巴巴一面要求不要泄题,另一面网上又有人要来讨论,这个题,楼主把我的意思理解错了,3000W的数据要在内存中解决,不能放在数据库中,否则,它还要你写什么算法呀。直接分表不就得了,这是在DBA要解决的问题,不是程序员的事情了。
0 请登录后投票
   发表时间:2009-10-01  
xinggm 写道
也不知道该怎么回答你,阿里巴巴一面要求不要泄题,另一面网上又有人要来讨论,这个题,楼主把我的意思理解错了,3000W的数据要在内存中解决,不能放在数据库中,否则,它还要你写什么算法呀。直接分表不就得了,这是在DBA要解决的问题,不是程序员的事情了。


3000w的数据 放不下啊~!2g的内存
0 请登录后投票
   发表时间:2009-10-01  
b5158488 写道
这是阿里巴巴最后的压轴题吧

嘿嘿 是的
0 请登录后投票
   发表时间:2009-10-01  
原体的描述是什么样子的呢?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics