索引
数据库中的索引与书籍中的索引类似,在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明了包含各个词的页码。而数据库中的索引是某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
索引的类型:
1. 聚集索引和非聚集索引
2. 主键索引和非主键索引
3. 唯一索引和非唯一索引
4. 单列索引和复合索引
1. 创建索引
CREATE [UNIQUE] [CLUSTERED| NONCLUSTERED ]
INDEX 索引名
ON 数据表名|视图名( 字段名 [ ASC | DESC ] [ ,...n ] )
参数说明:
UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。
CLUSTERED:用于指定创建的索引为聚集索引。
NONCLUSTERED:用于指定创建的索引为非聚集索引。
ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。
(1) 为学生表的学号列创建非聚集索引IX1
create nonclustered index IX1 on 学生表(学号)
(2) 为老师表的工号列创建唯一性索引IX2
create unique index IX2 on 教师表(工号)
(3) 为开课表的开课号和工号创建唯一性非聚集索引IX3(开课号升序,工号降序)
create unique nonclustered index IX3 on 开课表(开课号 asc,工号 desc)
(4) 查看所创建的索引信息
use 教学管理 EXEC Sp_helpindex 学生表
use 教学管理 EXEC Sp_helpindex 教师表
use 教学管理 EXEC Sp_helpindex 开课表
(5) 为数据库“教学管理”中的数据表关于“选课表.成绩”降序建立非聚集索引IX_选课表_成绩。
USE 教学管理
GO
IF EXISTS (SELECT name FROM sysindexes WHERE name=‘IX_选课表_成绩’)
DROP INDEX 选课表.IX_选课表_成绩
CREATE NONCLUSTERED INDEX IX_选课表_成绩 ON 选课表(成绩 DESC)
2. 删除索引
DROP INDEX 表名.索引名[,…n]
(1) 删除所创建的索引
drop index 学生表.IX1,教师表.IX2,开课表.IX3