1
数据库原理与应用技术
1.6.2.2 5.2.2 建立与删除索引
5.2.2 建立与删除索引

在SQL中,索引的建立和删除是数据操纵语句(DDL)的一部分,建立索引是加快查询速度的有效手段。一个建好的表,可以根据应用环境的需要建立若干索引,以提供多种存取路径。但严格来讲,索引是物理存取路径,不应属于逻辑数据模式。因此,索引通常是由DBA或表的属主(建表的人)根据需要建立和删除的。

1. 索引的建立

1)语句格式

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名> [<次序>][,<列名>[<次序>] ]…)

2)语句功能

对指定表中的列建立索引。

3)语句说明

<表名>:指定要建立索引的基本表名字。

<列名>:可以建立在该表的一列或多列上,各列名之间用逗号分隔。

<次序>:指定索引值的排列次序,升序用ASC表示,降序用DESC表示,默认时表示升序。

UNIQUE:表示此索引的每一个索引值只对应唯一的数据记录,所以,若选择此项,则相应的列一定是主关键字。

CLUSTER:表示要建立的索引是聚簇索引,意为索引项的顺序是与表中记录的物理顺序一致的索引组织。用户可以在最常查询的列上建立聚簇索引,以提高查询效率。

对于唯一值索引,已含重复值的属性列不能建立UNIQUE索引,在对某列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束。

建立聚簇索引后,基本表中的数据也要按指定的聚簇属性值的升序或降序存放,即聚簇索引的索引项顺序与表中记录的物理顺序一致。在一个基本表上最多只能建立一个聚簇索引。聚簇索引主要用于某些类型的查询,以提高查询效率。如果很少对基本表进行增删操作,很少对其中的变长列进行修改操作,那么这时可以建立聚簇索引。

【例5-6】将例5-1建好的学生表student中的年龄age按升序建立索引,对该表的学号按降序建立唯一索引。

解:CREATE UNIQUE INDEX SNO_INDEX ON student(sno DESC)

CREATE INDEX S_INDEX ON student(age)

2. 索引的删除

建立索引后,由系统使用和维护它,不需用户干预。建立索引是为了减少查询操作的时间,但如果数据插入、删除、修改频繁,那么系统会花许多时间来维护索引。此时,可以删除一些不必要的索引。

1)语句格式

DROP INDEX <索引名>

2)语句功能

将建立好的索引删除掉。

3)语句说明

删除索引时,系统会从数据字典中删除有关该索引的描述。

【例5-7】将例5-6建好的索引S_INDEX删除。

解:DROP INDEX student S_INDEX