数据库里有3000万条数据,取出前50条,机器2G的内存

解决方案 »

  1.   

    不是很懂...
    感觉就和分页一样吧...
    mysql 用limit
    sqlserver 用 top
    oracle用 rownum
      

  2.   

    鸡蛋里面找骨头 
    用rownum先得把数据都查一遍,数据量太大不很好
      

  3.   

    taobao的面试题,人家支付宝确实有这么多用户的,不是挑骨头,兄弟。
      

  4.   

    3000w数据的没处理过,近千万数据的就查过,用分页查询,也没觉得慢那需要自己写算法oracle是很强大的 。
      

  5.   

    排序是不可能的!要用算法实现,分而治之,每个数据集大小为:3000万/50,从每个中挑出最大值(max()),然后汇总。
      

  6.   

    有没有排序,如果有排序的话,性能不会很好的,sqlselect * from tablea where rownum <= 50;
      

  7.   

    可以用分析函数解决:
    select * 
      from (select a.*, rownumber() over(order by id asc) as r from t)
     where r <= 50
      

  8.   

    这个想快点 很难啊 比如说在数据库上不好查找数据的某一个字段符合要求 这样的话就只能
    只能去遍历, 若是想为这个字段建一个个索引表 似乎代价太大 
    总的来说 若遍历 对3000W个数据分n个区 启动 n个线程同步搜索 将返回的 集合一起 但 如何是50个最合适数据 就是个大问题 
    其实最好建一个包装类 将对象包装另外新建一个合适度的属性 在搜索算法搜索是可以进行评分 用来的到合适的
      

  9.   

    分表,  索引, partition ... 
      

  10.   

    3000万条 找50条,在一张表中,如果是mysql ,,基本是N 久
      

  11.   

    初学Java,还没接触到数据库……
      

  12.   

    select * from t where rownum < 51;
      

  13.   

    请把题发完整了   这个实在是太片面了,我也可以不用编程,给我个数据库,用SQL语言select一下不就把有关键字的遍历了一遍吗,像你说的最大的数,那就用 select  max,以此类推,所以你说的太笼统了。
      

  14.   

    如果是考 数据库,我 还要 大家 想算法 干什么呢?用 select语句明显是不行的。 还有 这个 题目明显是要排序吗 不然要2g内存 干什么啊