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

  • 相关阅读:
    使用神经网络识别手写数字Using neural nets to recognize handwritten digits
    C++ 宏定义与常量
    C语言枚举类型(Enum)
    【转】DSP是什么--DSP是神马东东??
    linux 源码编译安装apache
    【转】细说自动化运维的前世今生
    【转】C语言中整型运算取Ceiling问题
    linux系统调优
    linux 状态与系统调优
    vue2.0 watch 详解
  • 原文地址:https://www.cnblogs.com/heyang78/p/12871931.html
Copyright © 2011-2022 走看看