甲骨文索引类型的作用是什么

  介绍

这期内容当中小编将会给大家带来有甲骨文关索引类型的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

逻辑上:
  Single  column 单行索引
  Concatenated 多行索引
  Unique 
  NonUnique 非
  基于函数的函数索引
  Domain 域索引
  ,
  物理上:
  Partitioned 分区索引
  NonPartitioned 非分区索引
  b -树:
  Normal 正常型B树
  Rever  Key 反转B型树,
  位图

甲骨文提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要。一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止。而如果做出正确的选择,则可以合理使用资源,使那些已经运行了几个小时甚至几天的进程在几分钟得以完成,这样会使您立刻成为一位英雄。下面就将简单的讨论每个索引选项。


下面讨论的索引类型:
B树索引(默认类型)
位图索引
哈希索引
索引组织表索引
反转键(反向键)索引
基于函数的索引
分区索引(本地和全局索引)
位图连接索引


2.1, B树索引(默认类型)
, B树索引在甲骨文中是一个通用索引。在创建索引时它就是默认的索引类型。B树索引可以是一个列的(简单)索引,也可以是组合/复合(多个列)的索引。B树索引最多可以包括32列。
在下图的例子中,B树索引位于雇员表的last_name列上。这个索引的二元高度为3;接下来,Oracle会穿过两个树枝块(分支块),到达包含有ROWID的树叶块。在每个树枝块中,树枝行包含链中下一个块的ID号。
树叶块包含了索引值,ROWID,以及指向前一个和后一个树叶块的指针.Oracle可以从两个方向遍历这个二叉树。B树索引保存了在索引列上有值的每个数据行的ROWID值.Oracle不会对索引列上包含空值的行进行索引。如果索引是多个列的组合索引,而其中列上包含零值,这一行就会处于包含空值的索引列中,且将被处理为空(视为NULL)。
,,,,,,,,,,,,,


技巧:索引列的值都存储在索引中,因此,可以建立一个组合(复合)索引,这些索引可以直接满足查询,而不用访问表。这就不用从表中检索数据,从而减少了I/O量。


b - tree特点:
,适合与大量的增、删、改(OLTP)
不能用包含或操作符的查询;
适合高基数的列(唯一值多)
典型的树状结构;
每个结点都是数据块;
大多都是物理上一层、两层或三层不定,逻辑上三层;
叶子块数据是排序的,从左向右递增;
在分支块和根块中放的是索引的范围,


2.2,位图索引
位图索引非常适合于决策支持系统(决策支持系统DSS)和数据仓库,它们不应该用于通过事务处理应用程序访问的表。它们可以使用较少到中等基数(不同值的数量)的列访问非常大的表,尽管位图索引最多可达30个列,但通常它们都只用于少量的列。
例如,您的表可能包含一个称为性的列,它有两个可能值:男和女。这个基数只为2,如果用户频繁地根据性列的值查询该表,这就是位图索引的基列。当一个表内包含了多个位图索引时,您可以体会到位图索引的真正威力。如果有多个可用的位图索引,甲骨文就可以合并从每个位图索引得到的结果集,快速删除不必要的数据。


Bitmapt特点:
适合与决策支持系统;
做更新代价非常高;
非常适合或操作符的查询;
基数比较少的时候才能建位图索引;


技巧:对于有较低基数的列需要使用位图索引。性别列就是这样一个例子,它有两个可能值:男或女(基数仅为2),位图对于低基数(少量的不同值)列来说非常快,这是因为索引的尺寸相对于B树索引来说小了很多,因为这些索引是低基数的B树索引,所以非常小,因此您可以经常检索表中超过半数的行,并且仍使用位图索引。
当大多数条目不会向位图添加新的值时,位图索引在批处理(单用户)操作中加载表(插入操作)方面通常要比B树做得好。当多个会话同时向表中插入行时不应该使用位图索引,在大多数事务处理应用程序中都会发生这种情况。


示例
下面来看一个示例表参与者,该表包含了来自个人的调查数据。列Age_Code, Income_Level, Education_Level和Marital_Status都包括了各自的位图索引。下图显示了每个直方图中的数据平衡情况,以及对访问每个位图索引的查询的执行路径。图中的执行路径显示了有多少个位图索引被合,并可以看出性能得到了显著的提高。

甲骨文索引类型的作用是什么