堆表、索引组织表、索引表簇Oracle SQL 071-2

堆表、索引组织表、索引表簇 如何实践应用

  1.  
    堆表单表行顺序是随机最长用

    create table ttt1(id number primary key,n varchar2(5));

    insert into ttt1 values(1,'a');

    insert into ttt1 values(3,'c');

    insert into ttt1 values(2,'b');

    select * from ttt1;

        ID N
    ---------- ----------
         1 a
         3 c
         2 b

    索引组织的表单表行按PK顺序写更好读取性能

    create table tt2(id number primary key,n varchar2(5))organization index;

    insert into tt2 values(1,'a');

    insert into tt2 values(3,'c');

    insert into tt2 values(2,'b');

    select * from tt2;

    1 a
    2 b
    3 c

    索引表簇关联表的行存相同物理block减少关联表查询数据所需的磁盘读取

    表簇create cluster CLU_INFO_DEPEMP (deptno number) size 1024;(若block为8k就可以放7个表簇,因为pct_free;大空间浪费小影响聚合)

    簇表create table clu_info_dept(DEPTNO number,DNAME VARCHAR2(14),LOC VARCHAR2(13)) cluster CLU_INFO_DEPEMP(DEPTNO);
    create table clu_info_emp(DEPTNO number,ENAME VARCHAR2(10),JOB VARCHAR2(9)) cluster CLU_INFO_DEPEMP(DEPTNO);

    表簇索引create index CLU_INFO_index on cluster CLU_INFO_DEPEMP;

    索引之后才能

    insert into clu_info_dept values(10,'IT','SH');

    insert into clu_info_dept values(10,'IT2','SH');

    insert into clu_info_dept values(5,'IT3','SH');

    insert into clu_info_emp values(10,'Peter','ITManager');

    select deptno,dname,ename,loc,job from clu_info_dept natural join clu_info_emp;

    其中cluster table如clu_info_dept,clu_info_emp仅仅存储在cluster中,不占用segment空间。

    select SEGMENT_NAME,SEGMENT_TYPE, extents, HEADER_FILE, HEADER_BLOCK, BYTES, BLOCKS from dba_segments where owner='HR' and segment_name like '%CLU_INFO%';

    哈希表簇   
    分区表   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值