-
1
-
2
三、使用T-SQL 命令创建索引
使用这种方法,可以指定索引类型、唯一性、包含性和复合性,也就是说,既可以创建聚集索引,也可以创建非聚集索引;既可以在一个列上创建索引,也可以在两个或两个以上的列上创建索引。
在SQL Server 中,使用CREATE INDEX语句可以在关系表上创建索引,其基本的语法格式如下:
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED]
INDEX 索引名
ON <表名|视图名>(列名[ASC|DESC][,…n])
…
功能:
为指定的表或视图按照指定的列(索引键)、升序(ASC)、降序(DESC)创建唯一、聚集或非聚集索引。
案:为了提高依据图书名查找图书的速度,在数据库“Library”中为图书表“Book”创建一个不唯一、非聚集索引“Bookindex”,索引键为“Bname”,升序排列。
代码:
USE Library
GO
CREATE NONCLUSTERED
INDEX Bookindex
ON Book(Bname ASC)
例:对数据库bookData 的[书目信息]表,按作者创建索引,升序排列
USE bookData
GO
CREATE
INDEX Bookindex
ON 书目信息(作者)
SELECT * FROM 书目信息
例:USE [教务数据库]
CREATE INDEX IX_教师
ON 教师表(姓名)
索 引创建好以后,随着业务的发展,有时需要对索引作出更改。在SOL Server 中修改索引的方法主要有两种:一是在SSMS中通过方便的图形化工具来实现,二是通过T-SQL语句来实现。
一、使用图形工具修改索引
下面通过一个例子演示使用图形工具修改索引的过程。
【例7-5】修改StudentInfo学生表中的index student id索引。
(1)启动SSMS,展开“对象资源管理器”中数据库Student |“表”| StudentInfo| “索引”。右击要修改的index_student id索引。
(2)在弹出的快捷菜单中可以选择“重新生成”、“重新组织”、“禁用”、“启用”和“属性”等命令,这里选择“属性”命令,弹出“索引属性”对话框。
(3)“索引属性”对话框跟“创建索引”对话框内容类似,我们只要修改相应的参数内容,单击“确定”按钮即可。
二、使用T-SQL语句修改索引
修改索引除了可以使用图形工具外,还可以使用ALTER INDEX语句。其语法格式如下:
ALTER INDEX { index_name | ALL }
ON <object>
{ REBUILD
[ [ WITH (<rebuild_index_option> [,…n ] )]
| PARTITION= partition_number
[WITH (<single_partition_rebuild_index_option> [,…n])
]
]
]
| DISABLE
| REORGANIZE
[PARTITION= partition_number]
[ WITH ( LOB_COMPACTION = { ON | OFF } )]
| SET (<set_index_option>[,…n] )
)
[;]
禁用索引
索引被禁用,索引还存在,只是用户不能访问索引。禁用一个表的聚集索引,可以防止用户对数据进行访问,数据仍然存在表中,但用户不能对表中的数据进行操作。
语法如下:
ALTER INDEX 索引名 ON 表名 DISABLE
激活索引、重建索引: ALTER INDEX 索引名 ON 表名 REBUILD
例: USE [教务数据库]
ALTER INDEX IX_教师 ON 教师表 REBUILD
任务 查看索引信息
查看索引信息有两种方法:使用企业管理器和使用T-SQL语句查看过程。
其中使用企业管理器查看索引信息,使用建立索引的时候就可以查看索引的信息。使用系统存储过程查看索引信息,
其语法格式如下:
EXEC SP_HELPINDEX 表名
或 EXEC SP_HELP 表名
索引信息包括索引统计信息和索引碎片信息,通过查询这些信息分析索引性能,可以更好地维护索引。
除了使用目录视图来查看有关索引的信息外,还可以使用系统存储过程来查看数据表或视图中的索引信息,其语法格式如下:
sp_helpindex [ @objname = ] ' name '
语法参数的含义如下。
[ @objname=]‘name‘:用户定义的表或视图的限定或非限定名称。
sp_helpindex:查看索引信息的存储过程
例:EXEC sp_helpindex 书目信息
或 EXEC sp_helpindex '书目信息'
任务 删除索引
一、在SSMS中删除索引
下面通过一个例子演示使用图形工具删除索引的过程。
【例7-10】删除StudentInfo学生表中的index_student_id索引
(1)启动SSMS,展开“对象资源管理器”中数据库Student |“表”| StudentInfo|“索引”。右击要删除的index_student_id索引。
(2)在弹出的快捷菜单中选择“删除”命令,弹出“删除对象”对话框。
(3)单击“确定”按钮即可将index_ student_id索引删除。
二、使用T-SQL删除索引
删除索引,除了可以使用图形工具外,还可以使用DROP INDEX语句。其语法格式如下:
DROP INDEX 'table.index | view.index’ [,…n]
语法参数的含义如下。
DROP INDEX:用于删除索引。
Table.index:根据表创建索引的表名及索引名。
View.index:根据视图创建索引的视图名及索引名。
【例7-11】删除StudentInfo表中的index_student_id索引。
USE Student
DROP INDEX index_student_id
GO