在 SQL Server 中管理索引有三种方法:
¨ SQL 语句
¨ 使用【建立索引向导】
¨ 使用【企业管理器】
1 、 SQL 语句
CREATE INDEX 语句的语法如下:
CREATE [ UNIQUE ]
[ CLUSTERED | NON CLUSTERED]
INDEX < 索引名 >
ON < 表名 > ( < 列名 > [,< 列名 > … ] )
其中:
¨ < 索引名 > 是新建索引的名称。在一个数据库中,索引名是唯一的。
¨ < 表名 > 是建立索引的表名。
¨ < 列名 > 作为索引项的列名,可以是多个列。
只有对表具有建立索引权限的用户才能对该表建立索引。
例 7.16 在职工表上建立一个以工作日期为索引项的索引 gzrq_index ,则使用下列 SQL 语句:
create index gzrq_index
on zhigong (gzrq)
因为有可能多个职工的工作日期是一样的,所以最好不要建立唯一索引,即不使用 unique 关键字。如果在 “ 工作日期 ” 列使用了唯一索引,那么同年、同月、同日到本单位工作的职工只能有一名职工的信息进入职工表,其他的职工信息是不能插入表中。
例 7.17 在职工表上建立一个以姓名、工资为索引项的组合索引 mcgz_index ,则使用下列 SQL 语句:
create index mcgz_index
on zhigong (zgmc,gz)
删除索引使用 DROP INDEX 语句,其语法如下:
DROP INDEX < 索引名 >
其中 < 索引名 > 是要删除的索引名。
例 7.18 删除前面所建立的索引 mcgz_index ,执行下列语句:
drop index mcgz_index
因为索引与基表是息息相关的,当表中数据发生变动时,对应的索引项也要随之发生变化。所以删除索引有两种情形:
¨ 主动删除索引,使用 SQL 命令:
drop index < 索引名 >
¨ 被动删除,当使用 drop table 语句来删除表时。例如,要删除表 student ,则关于该表的定义、数据以及索引都统统删除掉。
索引是一种辅助表,对于大量数据建立索引有助于查询速度。索引也是有代价的,除了占用存储空间之外,还要维护索引与基表之间的一致性。过多索引不一定能提高数据库查询性能,所以,要科学设计索引。