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

本文详细介绍了数据库中的三种存储结构:堆表、索引组织表和索引表簇。堆表的行顺序是随机的,适合简单插入操作;索引组织表则按主键顺序存储,提供更好的读取性能;而索引表簇通过将关联表的行存储在同一物理块中,减少了查询时的磁盘读取。此外,还提及了哈希表簇和分区表的应用,帮助优化数据库查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  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%';

    哈希表簇   
    分区表   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值