知识大全 Oracle数据库中的索引详解

Posted 索引

篇首语:入于污泥而不染不受资产阶级糖衣炮弹的侵蚀,是最难能可贵的革命品质。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库中的索引详解相关的知识,希望对你有一定的参考价值。

Oracle数据库中的索引详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 ROWID的概念

  存储了row在数据文件中的具体位置 位编码的数据 A Z a z + 和 /

  row在数据块中的存储方式

  SELECT ROWID last_name FROM hr employees WHERE department_id = ;

  比如 OOOOOOFFFBBBBBBRRR

  OOOOOO data object number 对应dba_objects data_object_id

  FFF file# 对应v$datafile file#

  BBBBBB block#

  RRR row#

  Dbms_rowid包

  SELECT dbms_rowid rowid_block_number( AAAGFqAABAAAIWEAAA ) from dual;

  具体到特定的物理文件

  二 索引的概念

   类似书的目录结构

   Oracle 的 索引 对象 与表关联的可选对象 提高SQL查询语句的速度

   索引直接指向包含所查询值的行的位置 减少磁盘I/O

   与所索引的表是相互独立的物理结构

   Oracle 自动使用并维护索引 插入 删除 更新表后 自动更新索引

   语法 CREATE INDEX index ON table (column[ column] );

   B tree结构(非bitmap)

  [一]了解索引的工作原理

  表 emp

  

  目标 查询Frank的工资salary

  建立索引 create index emp_name_idx on emp(name); 

  

 [试验]测试索引的作用

   运行/rdbms/admin/utlxplan 脚本

   建立测试表

  create table t as select * from dba_objects;

  insert into t select * from t;

  create table indextable

  as select rownum id owner object_name subobject_name

  object_id data_object_id object_type created

  from t;

   set autotrace trace explain

   set timing on

   分析表 可以得到cost

   查询 object_name= DBA_INDEXES

   在object_name列上建立索引

   再查询

  [思考]索引的代价

  插入 更新

   三 唯一索引

   何时创建 当某列任意两行的值都不相同

   当建立Primary Key(主键)或者Unique constraint(唯一约束)时 唯一索引将被自动建立

   语法 CREATE UNIQUE INDEX index ON table (column);

   演示

  四 组合索引

   何时创建 当两个或多个列经常一起出现在where条件中时 则在这些列上同时创建组合索引

   组合索引中列的顺序是任意的 也无需相邻 但是建议将最频繁访问的列放在列表的最前面

   演示(组合列 单独列)

   五 位图索引

   何时创建

  列中有非常多的重复的值时候 例如某列保存了 性别 信息

  Where 条件中包含了很多OR操作符

  较少的update操作 因为要相应的跟新所有的bitmap

   结构 位图索引使用位图作为键值 对于表中的每一数据行位图包含了TRUE( ) FALSE( ) 或NULL值

   优点 位图以一种压缩格式存放 因此占用的磁盘空间比标准索引要小得多

   语法 CREATE BITMAP INDEX index ON table (column[ column] );

   掩饰

  create table bitmaptable as select * from indextable where owner in( SYS PUBLIC );

  分析 查找 建立索引 查找

   六 基于函数的索引

   何时创建 在WHERE条件语句中包含函数或者表达式时

   函数包括 算数表达式 PL/SQL函数 程序包函数 SQL函数 用户自定义函数

   语法 CREATE INDEX index ON table (FUNCTION(column));

   演示

  必须要分析表 并且query_rewrite_enabled=TRUE

  或者使用提示/*+ INDEX(ic_index)*/

    七 反向键索引

  目的 比如索引值是一个自动增长的列

  多个用户对集中在少数块上的索引行进行修改 容易引起资源的争用 比如对数据块的等待 此时建立反向索引

  性能问题

  语法

  重建为标准索引 反之不行

   八 键压缩索引

  比如表landscp的数据如下

  site feature job

  Britten Park Rose Bed Prune

  Britten Park Rose Bed Mulch

  Britten Park Rose Bed Spray

  Britten Park Shrub Bed Mulch

  Britten Park Shrub Bed Weed

  Britten Park Shrub Bed Hoe

  ……

  查询时 以上 列均在where条件中同时出现 所以建立基于以上 列的组合索引 但是发现重复值很多 所以考虑压缩特性

  Create index zip_idx

  on landscp(site feature job)

  press ;

  将索引项分成前缀(prefix)和后缀(postfix)两部分 前两项被放置到前缀部分

  Prefix : Britten Park Rose Bed

  Prefix : Britten Park Shrub Bed

  实际所以的结构为

   Prune

   Mulch

   Spray

   Mulch

   Weed

   Hoe

  特点 组合索引的前缀部分具有非选择性时 考虑使用压缩 减少I/O 增加性能

    九 索引组织表(IOT)

  将表中的数据按照索引的结构存储在索引中 提高查询速度

  牺牲插入更新的性能 换取查询性能 通常用于数据仓库 提供大量的查询 极少的插入修改工作

  必须指定主键 插入数据时 会根据主键列进行B树索引排序 写入磁盘

   十 分区索引

  簇:

  A cluster is a group of tables that share the same data blocks because they share mon columns and are often used together

cha138/Article/program/Oracle/201311/17769

相关参考

知识大全 oracle数据库如何重建索引

  当索引的碎片过多时会影响执行查询的速度从而影响到我们的工作效率这时候采取的最有利的措施莫过于重建索引了本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程接下来我们就开始介绍这一过程  

知识大全 Oracle数据库强制索引

Oracle数据库强制索引  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  当where子句对某一

知识大全 Oracle数据库中索引的维护

Oracle数据库中索引的维护  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文只讨论Orac

知识大全 讲解Oracle数据库的全文索引设置步骤

讲解Oracle数据库的全文索引设置步骤  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Orac

知识大全 在Oracle中合理创建数据库的索引

在Oracle中合理创建数据库的索引  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Oracl

知识大全 Oracle数据库索引优化技术关联查询性能调优

Oracle数据库索引优化技术关联查询性能调优  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数

知识大全 讲解Oracle数据库B-tree索引

讲解Oracle数据库B-tree索引  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!假如聚簇因子过

知识大全 Oracle和IBM将XML索引能力加入数据库

Oracle和IBM将XML索引能力加入数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  O

知识大全 在Oracle数据库中按用户名重建索引的方法

在Oracle数据库中按用户名重建索引的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果

知识大全 Oracle实例和Oracle数据库详解

Oracle实例和Oracle数据库详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一ORA