日期:2014-05-16  浏览次数:20359 次

oracle索引
聚集与非聚集索引
2006-10-11 10:09

聚集与非聚集索引

索引是在数据库表或者视图上创建的对象,目的是为了加快对表或视图的查询的速度

按照存储方式分为:聚集与非聚集索引
按照维护与管理索引角度分为:唯一索引、复合索引和系统自动创建的索引

索引的结构是由:根节点--->非叶节点--->非叶节点--->叶节点

1、聚集索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/修改/删除的影响比较大。

创建聚集索引的语法:
create NONCLUSTERED INDEX idximpID ON EMP(empID)

2、非聚集索引:不影响表中的数据存储顺序,检索效率比聚集索引低,对数据新增/修改/删除的影响很少
create CLUSTERED INDEX idxempID on emp(empID)

3、惟一索引:惟一索引可以确保索引列不包含重复的值.可以用多个列,但是索引可以确保索引列中每个值组合都是唯一的
create unique index idxempid on emp(姓,名)

4、复合索引:如果在两上以上的列上创建一个索引,则称为复合索引。
那么,不可能有两行的姓和名是重复的
语法:
create index indxfullname on addressbook(firstname,lastname)
5、系统自建的索引:在使用T_sql语句创建表的时候使用PRIMARY KEY或UNIQUE约束时,会在表上自动创建一个惟一索引
自动创建的索引是无法删除的
create table ABc
( empID int primary key,
firstname varchar(50)UNIQUE,
lastname varchar(50)UNIQUE,
)
这样的结果就出来了三个索引,但只有一个聚集索引哦

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
问题:聚集与非聚集的排序是否用变化?
答案是:聚集的有变化,非聚集的排序与未创建索引之前一样