ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 索引的基础知识(一)

oracle 索引的基础知识(一)

原创 Linux操作系统 作者:0x0x0x 时间:2012-07-02 10:05:59 0 删除 编辑
oracle 索引的基础知识(一)
 
索引主要分为以下五种类型:
 
1、b*tree索引,这种索引的树结构与二叉树比较相似,b*tree索引是基于二叉树的,

由分支块(branch block)和叶子块(leaf block)组成,位于最底层的被称为也块,这些块上包含

索引列的值和行所对应的rowid,分支块用来做导航,包含了索引列的范围值和另一索引块的地址信息;

b*tree中的b是balance的意思。
 
创建语句:create index index_name on table_name(col1,col2...);
 
应用场合:多用于OTLP系统;
 
2、反向索引(reversed key index),这种索引其实就是上述索引的反转,是索引条目更加均匀,

多用于并行服务器,以减少索引也块的争用,缺点是不能在使用常规索引的地方使用,

并且在范围搜索中不能被用。但是它的出现,具有以下优点:

解决了树 倾斜问题;将索引值反向后,新生成的值将非常离散,分散在不同的块中,

这能防止硬盘在某个区域操作过于频繁,引起热点问题;
 
创建语句:create index index_name on table_name(col1,col2...)  reverse;
 
应用场合:不适合做范围扫描,在特殊的场合下应用能减少块的争用;
 
3、降序索引。即将索引的值按照desc排序规则来生成,能提高降序查询!
 
创建语句:create index index_name on table_index(col1 desc,...);
 
应用场合:很明显应用在有降序查询的语句中;
 
4、位图索引。多用于OLAP系统,这种索引最好用在cardinality比较低的列,例如性别、组织机构等列。
 
创建语句:create BITMAP index index_name on table_name(col1,col2...);
 
应用场合:应用在OLAP和DSS系统中,在低cardinality的列中较为常用,DML过于频繁的语句中不应使用;
 
5、函数索引。使用函数索引有以下几个要注意的地方:

必须拥有query rewrite或global query rewrite权限;

必须使用基于成本的优化器,基于规则的优化器将被忽略;

query_rewrite_enabled=true 和query_rewrite_intigrity=trusted

这个可以用过show parameter 来查看;
 
创建语句:create index index_name on table_name(function(col1));
 
应用场合:应用在有函数索引的语句中。
 
点评:索引专题是个很复杂的专题,不仅要理论基础学得扎实,实际应用经验也很重要!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26977915/viewspace-734273/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-26

  • 博文量
    35
  • 访问量
    91945