zoukankan      html  css  js  c++  java
  • 十万大小的数据集,要从中选出最大的十个元素怎么做呢?

    怎么做,就是千万不要去写程序,因为你Oracle执行完成你才够打开编译器的.

    Solution:

    SQL> select b.* from (select a.*,rownum as rn from (select * from bigemp order by salary desc) a) b where b.rn<11;
    
            ID     SALARY         RN
    ---------- ---------- ----------
         58299      99998          1
         81565      99998          2
          8781      99996          3
         11017      99996          4
         46760      99996          5
         72216      99994          6
         52250      99993          7
         77820      99992          8
         19348      99990          9
         83024      99990         10
    
    已选择10行。
    
    已用时间:  00: 00: 00.06

    0.06秒,人家已经搞定了.这还是没有索引的情况!

    所有想把十万数据集从DB取出来用Java去算的都面壁三分钟去吧.

    全部SQL:

    SQL> create table bigemp(
      2      id number(6,0) primary key,
      3      salary number(6,0) not null);
    
    表已创建。
    
    
    SQL> insert into bigemp
      2  select rownum,dbms_random.value(0,100000) from dual
      3  connect by level<=100000;
    
    已创建100000行。
    
    SQL> commit;
    
    提交完成。
    
    SQL> select b.* from (select a.*,rownum as rn from (select * from bigemp order by salary desc) a) b where b.rn<11;
    
            ID     SALARY         RN
    ---------- ---------- ----------
         58299      99998          1
         81565      99998          2
          8781      99996          3
         11017      99996          4
         46760      99996          5
         72216      99994          6
         52250      99993          7
         77820      99992          8
         19348      99990          9
         83024      99990         10
    
    已选择10行。
    
    SQL> set timing on;
    SQL> select b.* from (select a.*,rownum as rn from (select * from bigemp order by salary desc) a) b where b.rn<11;
    
            ID     SALARY         RN
    ---------- ---------- ----------
         58299      99998          1
         81565      99998          2
          8781      99996          3
         11017      99996          4
         46760      99996          5
         72216      99994          6
         52250      99993          7
         77820      99992          8
         19348      99990          9
         83024      99990         10
    
    已选择10行。
    
    已用时间:  00: 00: 00.06

    --2020年5月11日--

  • 相关阅读:
    安装win7和ubuntu双系统
    Jenkins的2个问题
    junit里面Test Case的执行顺序
    使用Array类处理基本数组对象
    Location对象的页面跳转方法介绍
    Javascript几种创建对象的方法
    For循环重复代码的重构
    Sonar在ant工程中读取单元测试和覆盖率报告
    Jenkins无法读取覆盖率报告的解决方法
    python之路-day08-文件操作
  • 原文地址:https://www.cnblogs.com/heyang78/p/12871931.html
Copyright © 2011-2022 走看看