索引组织表

B_TREE索引采用索引列+ROWID的方式。
获取数据的时候要经过2次逻辑读取。
1、索引段的读取
2、利用索引的ROWID对数据段进行读取。
一般情况下,两次逻辑读取不会对查询存在影响。
但是当数据的使用频度较高或者经常需要大范围扫描时候,B_TREE索引的优势就不明显了。

 

索引组织表:指把索引和一般数据列全部存储在相同位置的表结构。

如果大部分的查询语句都要求对主键进行扫描且主键的长度在整个行的长度中所占的比例比较大。此种情况就很适合使用索引组织表。

注意:索引组织表的优点并不是不经过索引而减少一次逻辑读所形成的数字差异。事实上、在小量的随机读中,IOT表读取效率并不高。

但是在处理大范围数据扫描时候却可以获得很好的读取效率。

 

因此,在利用索引获取堆表数据时候,代价最大地方不是对索引的扫描上,而是在于利用索引ROWId对分散数据的随机读取(包含物理读和逻辑读)。

 

逻辑rowid和物理猜(physical guess)

IOT表的数据被存储在B_TREE索引的叶块。在B_tree随着数据的增加而不断增长时,用来存储键值(索引列值)的块(NODE)会被分割。

致使某个相同的键值无法继续存储在同个块。

 

 

IOT表适合的范围:
1)表的全部列都是索引.并且是组合主键索引
2)只是通过主键索引来访问表
3)希望表只是以某种特定的顺序物理存储
4)经常在主键或唯一键上使用BETWEEN

IOT的好处:
1)提供缓冲区效率,因为给定查询的缓存中需要的块更少
2)减产缓冲区缓存访问,这会改善可扩缩性
3)获取数据的工作总量更少,因为获取数据更快'
4)每个查询完成的物理I/O更少,因为对于任何给定的查询,需要的块更少,而且对
地址记录的一个物理I/O很可能可以获取所有地址(而不只是其中一个地址,但堆实现就只是获取一个地址)

IOT的参数:
----------
nocompress
compress 1
compress 2
可以使用ANALYZE INDEX VALIDATE STRUCTURE这个命令会址写一个名为INDEX_STATS的动态性能视图
select lf_blks,br_blks,used_space,opt_cmpr_COUNT,OPT_CMPR_PCTSAVE FROM INDEX_STATS;
----------
PCTTHRESHOLD
OVERFLOW
INCLUDING

PCTTHRESHOLD 10 OVERFLOW,当行中的数据量超过块的这个百分比时,行中余下的列将存储在溢出段中
如果此时块是8KB,长度大于800字节的行就会把其中的部份存储在别处.

INCLUDING 行中从第一列直到INCLUDING子句所指定列的所有列都存储在索引块上
余下的列存储到溢出段中

但在索引组织表非主键上建立索引不是很高效,
而且索引组织表不适合频繁地修改

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值