WEB开发网
开发学院数据库Oracle Oracle索引原理 阅读

Oracle索引原理

 2007-05-05 12:05:30 来源:WEB开发网   
核心提示: 使用USER_INDEXES视图,该视图中显示了一个distinct_keys列,Oracle索引原理(3),比较一下唯一键的数量和表中的行数,就可以判断索引的选择性,索引跳跃式扫描特性可以允许优化器使用组合索引,即便索引的前导列没有出现在WHERE子句中,选择性越高,索引返回的数据就越少

使用USER_INDEXES视图,该视图中显示了一个distinct_keys列。比较一下唯一键的数量和表中的行数,就可以判断索引的选择性。选择性越高,索引返回的数据就越少。

[6] 群集因子(Clustering Factor)

Clustering Factor位于USER_INDEXES视图中。该列反映了数据相对于已索引的列是否显得有序。如果Clustering Factor列的值接近于索引中的树叶块(leaf block)的数目,表中的数据就越有序。如果它的值接近于表中的行数,则表中的数据就不是很有序。

[7] 二元高度(Binary height)

索引的二元高度对把ROWID返回给用户进程时所要求的I/O量起到关键作用。在对一个索引进行分析后,可以通过查询DBA_INDEXES的B- level列查看它的二元高度。二元高度主要随着表的大小以及被索引的列中值的范围的狭窄程度而变化。索引上如果有大量被删除的行,它的二元高度也会增加。更新索引列也类似于删除操作,因为它增加了已删除键的数目。重建索引可能会降低二元高度。

[8] 快速全局扫描

在Oracle7.3后就可以使用快速全局扫描(Fast Full Scan)这个选项。这个选项允许Oracle执行一个全局索引扫描操作。快速全局扫描读取B-树索引上所有树叶块。初始化文件中的 DB_FILE_MULTIBLOCK_READ_COUNT参数可以控制同时被读取的块的数目。

[9] 跳跃式扫描

从Oracle9i开始,索引跳跃式扫描特性可以允许优化器使用组合索引,即便索引的前导列没有出现在WHERE子句中。索引跳跃式扫描比全索引扫描要快的多。下面的程序清单显示出性能的差别:  create index skip1 on emp5(job,empno);
  index created.
  select count(*)
  from emp5
  where empno=7900;
  Elapsed:00:00:03.13
  Execution Plan
  0   SELECT STATEMENT Optimizer=CHOOSE(Cost=4 Card=1 Bytes=5)
  1 0  SORT(AGGREGATE)
  2 1   INDEX(FAST FULL SCAN) OF 'SKIP1'(NON-UNIQUE)
  Statistics
  6826 consistent gets
  6819 physical  reads
  select /*+ index(emp5 skip1)*/ count(*)
  from emp5
  where empno=7900;
  Elapsed:00:00:00.56
  Execution Plan
  0   SELECT STATEMENT Optimizer=CHOOSE(Cost=6 Card=1 Bytes=5)
  1 0  SORT(AGGREGATE)
  2 1   INDEX(SKIP SCAN) OF 'SKIP1'(NON-UNIQUE)
  Statistics
  21 consistent gets
  17 physical  reads
[10] 索引的类型
   B-树索引
   位图索引
   HASH索引
   索引编排表
   反转键索引
   基于函数的索引
   分区索引
   本地和全局索引

上一页  1 2 3 

Tags:Oracle 索引 原理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接