索引

来源:互联网 发布:apache server status 编辑:程序博客网 时间:2024/06/11 18:55

索引是与表关联的可选结构.可以明确地创建索引,以加快对表执行SQL语句的速度.合理使用索引是减少磁盘I/O的主要方法.索引包括以下几种类型:

1.标准索引.语法:create index 索引名 on 表名(字段名)实例如下:create index ind_ename on emp(ename)

2.唯一索引.主键上会自动创建唯一索引.唯一索引确保在定义索引的列中,表的任意两行的值都不相同.语法:create unique index 索引名 on 表名(字段名)实例:create unique index ind_name on emp(ename)

3.组合索引,组合索引是在表中的多个列上创建的索引.基于:select .... from table where ...and ... 此种多条件语句考虑建立组合索引实例:create index ind_name on emp(ename,sal)

4.反向键索引.此索引适合由序列组成的字段或者某数据分布密集的字段.如:原字段 反向键字段1001   10011002   20011003   30011004   4001是不是观察到哪边检索得快些?对,就是左边的反向键字段.实例:create index ind_empno on emp(empno) reverse

5.位图索引.使用位图索引的优点在于,它最适用于低基数列,也就是不同值的数目比表的行数少的列.如果某个列的值重复超过一百次,则可以考虑在该列上创建位图索引.实例:create bitmap index in_deptno on emp(deptno)

6.基于函数的索引.为了方便操作,oracle提供了一个选项,可以基于一个或多个列上的函数或表达式创建索引.如下所示:create index ind_sal on emp(lower(ename)) 必须注意的是,要创建基于函数或表达式的索引,必须具有query rewaite 系统权限.

7.索引组织表.索引组织表与普通表不同之处在于,该表的数据存储在与其关联的索引中.对表数据进行的修改,如添加新行,更新新行或删除行,只会导致索引的更新.索引组织表最大的优点,提高读取速度,降低I/O读写.建立索引组织表必须有一列为主键.实例如下:create table ind_table(id number primary key,name varchar2(20))organization index;OK,下面再来讲讲索引中的分区.与对表进行分区类似,Oracle也允许对索引分区.与表分区一样,索引分区可以存储在不同的表空间中.索引分区有如下三种类型:(1)局部分区局部分区索引是在分区表上创建的一种索引,在局部分区索引中,Oracle为表的每个分区建立一个独立的索引.实例如下:

先创建一个分区表:

create table order_mast(order_id number(4),order_name varchar2(20))partition by range(order_id)(partition p1 values less than(1000),partition p2 values less than(2000),partition p3 values less than(maxvalue));

然后紧接着创建局部分区索引:create index myindex on order_mast(order_id) local(2)

全局分区全局分区是指在分区表或非分区表上创建的索引.

全局索引的键可以引用存储在多个分区中的行.合璧索引是自己分区.实例如下:

create index glb_ind on order_mast(order_id) globalpartition by range(order_id)(partition p1 values less than(1500),partition p2 values less than(maxvalue));

原创粉丝点击