六.索引及其用途
1.索引是以表列为基础的数据库对象,它保存着表中排序的索引列。
2.其主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间。
3.创建索引与维护索引都会浪费时间,对表中的数据进行增加,删除和修改操作时,索引就要进行维护,否则索引的作用就会下降;另外索引也会占用一定的物理空间,如果占用的物理空间过多,就会影响到整个数据库SQL Server系统的性能。
4.建立索引的原则:
(1)定义主键的数据列一定要建立索引。
(2)定义有外键的数据列一定要建立索引。
(3)对于经常查询的数据列最好建立索引。
A、对于需要在指定范围内的快速或频繁查询的数据列;
B、经常用在WHERE子句中的数据列。
(4)对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
(5)对于定义为text、image和bit的数据类型的列不要建立索引。
5.索引的分类:
(1)聚集索引:聚集索引会对表和视图进行物理排序。
(2)非聚集索引:不对表和视图进行物理排序,最多可建立250个非聚集索引,或者249个非聚集索引与1个聚集索引。
(3)唯一索引:唯一索引不允许两行具有相同的索引值。
6.创建索引的语法:
CREATE [UNIQUE][CLUSTERED | NONCLUSTERED]
INDEX index_name
ON {table_name | view_name}
[WITH [index_property [,....n]]
说明:
UNIQUE: 建立唯一索引。
CLUSTERED: 建立聚集索引。
NONCLUSTERED: 建立非聚集索引。
Index_property: 索引属性。
UNIQUE索引既可以采用聚集索引结构,也可以采用非聚集索引的结构,如果不指明采用的索引结构,则SQL Server系统默认为采用非聚集索引结构。
7.删除索引语法:
DROP INDEX table_name.index_name[,table_name.index_name]
说明:table_name: 索引所在的表名称。
index_name : 要删除的索引名称。
8.显示索引信息:
使用系统存储过程:sp_helpindex 查看指定表的索引信息。
执行代码如下:
Exec sp_helpindex book1;
9.重命名索引
语法:
Exce sp_rename table_name.old_index_name, new_index_name
10.显示查询计划的命令为:
SET SHOWPALN_ALL ON | OFF 或 SET SHOWPLAN_TEXT ON | OFF
说明:帮助用户分析有哪些索引被系统采用。
例子:
USE book
GO
SET SHOWPLAN_ALL ON
GO
SELECT * FROM book1 WHERE 编号='YBZT2406'
GO
SET SHOWPLAN_ALL OFF
GO
说明:在Set showplan命令与select 命令之间一定要有 go语句。
11.设置是否显示磁盘IO统计的命令为:
SET STATISTICS IO ON | OFF
12.索引的维护
更新索引的语法:
UPDATE STATISTICS table_name index_name
使用DBCC SHOWCONTIG 语句扫描表语法:
DBCC SHOWCONTIG (table_name, index_name)
使用DBCC INDEXDEFRAG语句进行碎片整理语法:
DBCC SHOWDEFRAG(database_name,table_name,index_name)