SQL Server学习进程(七)--创建和使用索引

1.索引

索引是一个单独的、存储在磁盘上的数据库结构,它们包含着对数据表里所有记录的引用指针。使用索引便于快速找出在某个或多个列中有某一特定值的行,对相关列使用索引是降低查询操作时间的最佳途径。

如果没有索引,数据库需要遍历查询,当有了索引,SQL Server不需要任何扫描,可以直接找到目标位置。

索引的优点:

1.通过创建唯一索引,可以保证数据库表中每一行数据的唯一性。

2.可以大大加快数据的查询速度,这也是创建索引的主要原因。

3.实现数据的参照完整性,可以加速表和表之间的连接。

4.在使用分组和排序字句进行数据查询时,也可以显著减少查询中分组和排序的时间。

增加索引的缺点:

1.创建索引和维护索引需要耗费时间,并且随着数据量的增加所消耗的时间也会增加。

2.索引需要占用磁盘空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。

3.当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。

索引的分类

1.聚集索引

1.1每一个表只能有一个聚集索引,因为数据本身只能按一个顺序存储。

1.2表中的物理顺序和索引中行的物理顺序是相同,创建任何非聚集索引之前要首先创建聚集索引,因为非聚集索引改变了表中的物理顺序。

1.3关键值的唯一性使用UNIQUE关键字或者由内部的唯一识别符明确维护。

1.4在索引创建的过程中,SQL Server临时使用当前数据库的磁盘空间,所以要保证有足够的空间创建聚集索引。 

2.非聚集索引

聚集索引具有完全独立于数据行的结构。可以对数据表创建多个非聚集索引。

查询具有以下特点时可以考虑使用非聚集索引:

(1)使用 JOIN 或 GROUP BY 子句。应为连接和分组操作中所涉及的列创建多个非聚集索引,为任何外键列创建一个聚集索引。

(2)包含大量唯一值的字段。

(3)不返回大型结果集的查询。创建筛选索引以覆盖从大型表中返回定义完善的行子集的查询。

(4)经常包含在查询的搜索条件(如返回完全匹配的WHERE子句)中的列。

2.创建索引

2.1使用对象资源管理器创建索引

目标数据表-》索引-》新建索引-》


唯一性:指索引键 列中的字段不能重复。

2.2T-SQL语言生成索引

create [UNIQUE] [CLUSTERED | NONCLUSTERED]
INDEX index_name ON {table | view} (column [ASC | DEC][,...n])
[ INCLUDE (column_name [,...n])]
[with
(
FILEFACTOR=filefactor --filefactor介于0%-100%

)

--create UNIQUE NONCLUSTERED 
--INDEX 食品 ON animals(food desc)

3.删除索引

T-SQL语句删除索引

drop index '[table | view].index' [,...n]

drop index 'index_name' on '[table | view]'

DROP INDEX不能删除由CREATE TABLE 或者 ALTER TABLE命令创建的主键或者唯一性(UNIQUE)约束索引),也不能删除系统表中的索引。


猜你喜欢

转载自blog.csdn.net/qq_40951833/article/details/80725097
今日推荐