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日--

  • 相关阅读:
    二元函数求一定区间上的最大值问题
    LOF异常检测算法实现
    失效项目总代码汇总
    layui弹出层layer.open 中的content问题
    分治算法基本原理和实践
    Android 文件存储浅析
    详解 CmProcess 跨进程通信的实现
    View Animation 运行原理解析
    margin-top失效及解决办法
    vue自定义移动端touch事件之点击、滑动、长按事件
  • 原文地址:https://www.cnblogs.com/heyang78/p/12871931.html
Copyright © 2011-2022 走看看