在表上创建索引或者主键或唯一性约束后,可能需要查看表中索引的信息,查看索引的类型和包含了哪些列,或者查看使用空间的情况。
可以通过7.2.2节中讲述的方法,打开如图7-9所示“管理索引”对话框,在“现有索引”列表框中列出该表中已经创建的索引,选择其中一个索引,单击“编辑”按钮,即可弹出“编辑现有索引”对话框,与“新建索引”对话框完全相同,在其中可对该索引进行查看或编辑。
也可以使用系统存储过程来查看信息。其中sp_helpindex可用于获取索引信息,其语 法如下:
sp_helpindex <表名>
例如,执行“sp_helpindex school.dbo.student”命令即可查看school数据库中所有者dbo的student表中的索引。
另外还可通过sp_statistics语句来显示表中索引的信息,其语法如下:
sp_statistics '<表名>'[,'<所有者>'] [,'<数据库名>'] [,'<索引名>']
若要查看school数据库中所有者dbo的student表中的索引name_index的信息,可执行如下命令:
sp_statistics 'student','dbo','school','name_index'
SQL Server还可以通过如下两种方法删除索引。
在企业管理器中通过7.2.2节中讲述的方法,打开如图7-9所示的“管理索引”对话框,在“现有索引”列表框中列出该表中已经创建的索引,选择其中一个索引,单击“删除”按钮,即可将选定的索引删除。
删除索引可使用Transact-SQL语言中的DROP INDEX语句,其语法如下:
DROP INDEX <表名>.<索引名>
若要删除student表中的name_index索引,可以执行如下命令:
DROP INDEX student.name_index
利用索引可以提供查询的效率,如果当要查询的列上建有索引,就可以先搜索这个索引,找到要查询的值,再找到相应的数据行的位置,再根据这个位置找到要查询的记录。在执行查询时,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 查询索引号