您的位置: 网站首页 > 数据库 > SQL Server数据库应用技术 > 第7章 索引 > 【7.3 索引的使用及维护】

7.3 索引的使用及维护

 

7.3  索引的使用及维护

7.3.1  查看索引

在表上创建索引或者主键或唯一性约束后,可能需要查看表中索引的信息,查看索引的类型和包含了哪些列,或者查看使用空间的情况。

可以通过7.2.2节中讲述的方法,打开如图7-9所示“管理索引”对话框,在“现有索引”列表框中列出该表中已经创建的索引,选择其中一个索引,单击“编辑”按钮,即可弹出“编辑现有索引”对话框,与“新建索引”对话框完全相同,在其中可对该索引进行查看或编辑。

也可以使用系统存储过程来查看信息。其中sp_helpindex可用于获取索引信息,其语  法如下:

sp_helpindex <表名>

例如,执行“sp_helpindex school.dbo.student”命令即可查看school数据库中所有者dbostudent表中的索引。

另外还可通过sp_statistics语句来显示表中索引的信息,其语法如下:

sp_statistics '<表名>'[,'<所有者>'] [,'<数据库名>'] [,'<索引名>']

若要查看school数据库中所有者dbostudent表中的索引name_index的信息,可执行如下命令:

sp_statistics 'student','dbo','school','name_index'

7.3.2  删除索引

SQL Server还可以通过如下两种方法删除索引。

1.使用企业管理器删除索引

在企业管理器中通过7.2.2节中讲述的方法,打开如图7-9所示的“管理索引”对话框,在“现有索引”列表框中列出该表中已经创建的索引,选择其中一个索引,单击“删除”按钮,即可将选定的索引删除。

2.使用SQL语言删除索引

删除索引可使用Transact-SQL语言中的DROP INDEX语句,其语法如下:

DROP INDEX <表名>.<索引名>

若要删除student表中的name_index索引,可以执行如下命令:

DROP INDEX student.name_index

7.3.3  SELECT语句中使用索引

利用索引可以提供查询的效率,如果当要查询的列上建有索引,就可以先搜索这个索引,找到要查询的值,再找到相应的数据行的位置,再根据这个位置找到要查询的记录。在执行查询时,SQL Server会自动根据索引情况对查询进行优化,决定采用何种索引进行查询。但是如果使用者对表的索引信息比较清楚,还可以指定索引来执行SELECT语句进行查询,其语法格式如下:

SELECT <查询项目列表> FROM <表名> WITH (INDEX(<索引名>|<索引名>))

例如,通过以下语句可以查询表中所有的学生姓名:

SELECT sname FROM student WITH (INDEX(name_index))

其中INDEX中也可以使用索引号,索引号可以通过查询sysindexes表得到,下列命令可以在school数据库中查询name_index的索引号:

SELECT name,indid FROM school.dbo.sysindexes WHERE name='name_index'

在查询分析器中,该语句的运行结果如图7-12所示,在school数据库中name_index的索引号为2

7-12  查询索引号