Oracle索引

索引

概念

结构图
在这里插入图片描述
查询示意图
在这里插入图片描述
Leaf(叶子块)存储key column value(索引具体的值)以及能定位到数据块所在位置的rowid(索引块和数据块)。
在这里插入图片描述
索引的结构
在这里插入图片描述

扩展:rowid和rownum
在这里插入图片描述

特点

1、索引树的高度一般都比较低
2、索引由索引列存储的值及rowid组成
3、索引本身是有序的

实验

删除表

drop table t1 purge;
drop table t2 purge;
drop table t3 purge;
drop table t4 purge;
drop table t5 purge;
drop table t6 purge;
drop table t7 purge;

创建表

create table t1 as select rownum as id, rownum+1 as id2 from dual connect by level<=5;
create table t2 as select rownum as id, rownum+1 as id2 from dual connect by level<=50;
create table t3 as select rownum as id, rownum+1 as id2 from dual connect by level<=500;
create table t4 as select rownum as id, rownum+1 as id2 from dual connect by level<=5000;
create table t5 as select rownum as id, rownum+1 as id2 from dual connect by level<=50000;
create table t6 as select rownum as id, rownum+1 as id2 from dual connect by level<=500000;
create table t7 as select rownum as id, rownum+1 as id2 from dual connect by level<=5000000;

在这里插入图片描述
在这里插入图片描述

创建索引

create index idx_id_t1 on t1(id);
create index idx_id_t2 on t2(id);
create index idx_id_t3 on t3(id);
create index idx_id_t4 on t4(id);
create index idx_id_t5 on t5(id);
create index idx_id_t6 on t6(id);
create index idx_id_t7 on t7(id);

查看索引段

select segment_name, bytes/1024 from user_segments
where segment_name in ('IDX_ID_T1','IDX_ID_T2','IDX_ID_T3','IDX_ID_T4','IDX_ID_T5','IDX_ID_T6','IDX_ID_T7');

在这里插入图片描述
问:

为什么’IDX_ID_T1’,‘IDX_ID_T2’,'IDX_ID_T3’三个索引一样大

答:

块:最小的单位
区:最小的空间分配单位
一个区8个块,一个块8KB,段的最小空间 ——— 64KB

查看索引统计信息

在这里插入图片描述问:

为什么7张表记录数依次都是10倍的差别,BLEVEL是一样高?

答:

BLEVEL=1表示索引树为2层,但500、5000、50000都不能让叶子块的数据量多到把第二层的第一个管理块填满,所以产生不能第三层,所以都是2层高,其他类似。

索引扫描在这里插入图片描述

执行计划 & 统计信息
在这里插入图片描述

在这里插入图片描述

第二次select
在这里插入图片描述
在这里插入图片描述

返回时间一致
COST一致
逻辑读一致

BLEVEL都为2,高度为3,产生的IO次数一致。

全表扫描

在这里插入图片描述
在这里插入图片描述
可以看到COST和逻辑读次数是原来的好多好多倍

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值