oracle标记位做索引,Oracle 10g 要点整理 之 索引

索引

1 概述

索引是一种树状结构。

索引分为逻辑设计和物理实现。

逻辑设计分为:单列索引、复合索引、唯一性索引和非唯一性索引、基于函数的索引。

物理实现分为:分区索引、非分区索引、B树索引、正向索引、反向索引、位图索引。

惟一索引是索引列值不能重复的索引,非惟一索引是索引列值可以重复的索引。

全表索引:一般查询表时,Oracle顺序扫描所有可能的行,即使找到了匹配行,但并不意味着这个是唯一的匹配,所以还要继续搜索下去。

建立索引语句

Create index 索引名 on 表名(列名);

B树索引:数据都位于基于索引的叶子节点中。叶子节点中包含了构建索引的关键数据和源表中行的rowid。B树索引所有的叶子节点都具有相同的深度,所以无论查询条件是哪种类型或写法,都具有相同的查询速度。无论对于大型表还是小型表,B树索引的效率都是相同的.

Oracle能够尽可能简洁有效地对表进行全表搜索。当优化器决定对表进行全表搜索时,它会批量读取表数据块。

一个索引项只会指向一个单独的表数据块,而且一次只能读取一个数据块。

2 索引开销

索引的出现会对插入、更新、删除操作带来负面影响。

(1)插入影响

如果需要对叶子节点进行分割,并且对它已有的索引项重新分配,进而为新的索引项腾出空间。通常做法是:Oracle会对平均50%的索引项放到分割后的第一部分中,而将另外的50%放到其余的部分中。

当索引的高度增加时,就需要附加的I/O来获取叶子节点。

索引高度不是在索引中出现插入活动的主要开销。开销主要是由于重新组织活动本身,以及获取额外的数据块,这将导致插入操作需要花费很长的时间来完成。

由很多空叶子节点构成的索引与经过了良好压缩的索引相比,需要更多的I/O才可以完全扫描。

在创建索引时,在语句后加上 “pctfree 数字”可以在关闭叶子节点之前只对其进行部分填充。让索引中有空余空间,意味着对索引的扫描会比将pctfree设置为0时花费更长的时间。但这样会节省插入新数据操作时的开销。

(2)更新、删除影响

更新有时会导致叶子节点中的索引项标记为死亡,然后在位置恰当的叶子节点中插入全新的索引项,甚至可能需要进行数据库分割。

将索引项标注为死亡而不是实际删除他们,他们在叶子节点中所占用的空间不会被释放。但可以重新被利用。

3 反转键索�

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值