Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92383301
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-30 16:15:50

 

索引是与表关联的可选结构.可以明确地创建索引,以加快对表执行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   1001
1002   2001
1003   3001
1004   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) global
partition by range(order_id)
(
partition p1 values less than(1500),
partition p2 values less than(maxvalue)
);

(3)全局非分区,索引中不分区,与普通索引相同.在此不在举例说明.

原文:http://hujing1229.blog.ccidnet.com/blog-htm-do-showone-uid-60604-type-blog-itemid-184637.html

阅读(178) | 评论(0) | 转发(0) |
0

上一篇:pl/sql编程(1)

下一篇:视图

给主人留下些什么吧!~~