zoukankan      html  css  js  c++  java
  • 【oracle实验】一张一千六百万记录的表按部门id分组累计一次需要几秒?答案(6-7秒)

    对一个唯一主键为id,包括名称和部门id及其他共20个字段的表,答案是7秒左右,以下是执行情况:

    SQL> select count(*),deptid from tb_16million2 group by deptid;
    
      COUNT(*)     DEPTID
    ---------- ----------
        768000          5
        860000          8
        848000          7
        836000          6
        828000         11
        420000         20
        828000         18
        912000          3
        436000          1
        832000         14
        912000         17
    
      COUNT(*)     DEPTID
    ---------- ----------
        884000         10
        860000         16
        796000          9
        856000          2
        808000         15
        840000         19
        728000         13
        836000          4
        912000         12
    
    已选择20行。
    
    已用时间:  00: 00: 07.26
    SQL>

    如上,最后显示是7.26秒。

    建表及查询语句如下,大家可以自行去试:

    CREATE TABLE tb_4thousand1
    (
        id NUMBER not null primary key,
        name NVARCHAR2(60) not null,
        deptid int not null,
        col03 int not null,
        col04 int not null,
        col05 int not null,
        col06 int not null,
        col07 int not null,
        col08 int not null,
        col09 int not null,
        col10 int not null,
        col11 int not null,
        col12 int not null,
        col13 int not null,
        col14 int not null,
        col15 int not null,
        col16 int not null,
        col17 int not null,
        col18 int not null,
        col19 int not null,
        col20 int not null
    )
    
    insert into tb_4thousand1
    select rownum,
            dbms_random.string('*',dbms_random.value(6,20)),
        dbms_random.value(1,20),
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    from dual
    connect by level<4001
    order by dbms_random.random
    
    CREATE TABLE tb_4thousand2
    (
        id NUMBER not null primary key,
        name NVARCHAR2(60) not null,
        deptid int not null,
        col03 int not null,
        col04 int not null,
        col05 int not null,
        col06 int not null,
        col07 int not null,
        col08 int not null,
        col09 int not null,
        col10 int not null,
        col11 int not null,
        col12 int not null,
        col13 int not null,
        col14 int not null,
        col15 int not null,
        col16 int not null,
        col17 int not null,
        col18 int not null,
        col19 int not null,
        col20 int not null
    )
    
    insert into tb_4thousand2
    select rownum,
            dbms_random.string('*',dbms_random.value(6,20)),
        dbms_random.value(1,20),
            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    from dual
    connect by level<4001
    order by dbms_random.random
    
    select count(*) from (select t1.* from tb_4thousand1 t1 cross join tb_4thousand2 t2)
    
    create table tb_16million2 as select t1.* from tb_4thousand1 t1 cross join tb_4thousand2 t2
    
    update tb_16million2 set id=rownum where 1=1;
    
    ALTER TABLE tb_16million2 ADD CONSTRAINT tb_16million2_pk PRIMARY KEY (id);
    
    select count(*),deptid from tb_16million2 group by deptid;

    本人机器情况如下:

    我的环境:

    # 类别 版本
    1 操作系统 Win10
    2 数据库 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    3 硬件环境 T440p
    4 内存 8G

    感悟:须教自我心中出,切忌随人脚后行。

    END

  • 相关阅读:
    使用Optioanl优雅的处理空值
    综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列
    Nginx 相关介绍
    在Intellij IDEA中使用Debug
    关于Spring的BeanUtils
    MySQL 索引总结
    java中值传递和引用传递
    SQL易错锦集
    Java和SQL取两个字符间的值
    好文章收藏--五分钟理解一致性哈希算法(consistent hashing)
  • 原文地址:https://www.cnblogs.com/heyang78/p/15131782.html
Copyright © 2011-2022 走看看