chuanzhongdu1的专栏

人法地,地法天,天法道,道法自然

oracle索引分类

B-TREE INDEX,B树索引:在创建索引时他是默认的索引类型,B树索引可以使单一列(简单)的索引,也可以是多个列(组合/复合)的索引。最多可以包括32列。适合:1,访问表中占很小比例的行,这样就可以使用索引快速定位。 2,根本不访问表,所需查询的数据全部在索引中,比如查询的列就是索引,这样直接访问索引就可以得到结果。,多使用在OLTP系统中。

Create index index_test01 on test01(id);


BITMAP-INDEX,位图索引:是在列的值重复的非常多的情况下使用。当大多数条目比不会向位图添加新的值时,位图索引在加载表时比B树索引做的好。由于位图索引最大的用处就是当列值有很多重复的时候,所以他不能被声明成唯一索引。当使用alter table修改有位图索引的列的时候,位图索引失效,需重建索引。位图索引里是101010这类的,所以是不包含任何列数据的。

CREATE BITMAP INDEX index_name ON normal_index_creation_clause;


反转建索引:当载入一些有序索引的时候,索引集中分布,如果数据使用的索引集中在一个数据块则会发生争用,这是可以将索引反转,reverse。

hash索引:使用hash索引必须使用hash集群。建立cluster的同时也建立了hash索引。

创建反序索引

createindex idx_reverse on customer(col1,col2) reverse;

修改indexreverseindex

alterindex index_name rebuild reverse;


function index ,基于函数的索引:当查询的列上使用了函数之后就不能使用原来的索引了,但是可以建立函数索引,使建立在函数上的索引可以使用。在优化器中,必须将参数QUERY_REWRITE_ENABLED设为true。

Create index index_fun_test05 on test05(substr(id,1,1)

分区索引:本地分区索引,全局分区索引。

本地分区索引:可以使用与表相同的分区键和范围界限来对本地索引分区。每个本地索引的分区只包含了他所关联的表分区的键和rowid。本地分区索引又分为有前缀索引和无前缀索引。有前缀索引:包含了来自分区键的键,并把它们作为索引的前导,相当于索引的分区都使用表相同范围的界限来创建的。没有包含在where子句中的值的分区是不会被访问到的,这样也提高了子句的性能。  无后缀索引:可以在表的任何一列建立无前缀的索引,但是索引的每个分区只包含表的相应分区的兼职。

全局分区索引是在一个索引分区包含来自多个表分区的键。在建立全局分区索引的时候,必须定义分区键的范围。只能是B树索引。如果一个分区被截取,增加,分割,删除等,就必须重建索引。全局有前缀索引没经过对等分区。

索引聚簇表

聚簇是指:如果一组表有一些共同的列,则将这样一组表存储在相同的数据库块中;聚簇还表示把相关的数据存储在同一个块上。利用聚簇,一个块可能包含多个表的数据。概念上就是如果两个或多个表经常做链接操作,那么可以把需要的数据预先存储在一起

  1. create table dept( deptno number(2) primary key, 3 dname varchar2(14),loc varchar2(13))  
  2. cluster emp_dept_cluster(deptno);

  1. create table emp( empno number primary key,ename varchar2(10),job varchar2(9),mgr number,hiredate date,sal number,comm number,  
  2. deptno number(2) constraint emp_fk references dept(deptno))  
  3. cluster emp_dept_cluster(deptno);

阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

SQL执行过程和优化

2014年09月14日 1.22MB 下载

没有更多推荐了,返回首页

不良信息举报

oracle索引分类

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭