SQL Server 2014
发布日期: 2016年12月
索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。 索引包含由表或视图中的一列或多列生成的键。 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。
表或视图可以包含以下类型的索引:
聚集索引和非聚集索引都可以是唯一的。 这意味着任何两行都不能有相同的索引键值。 另外,索引也可以不是唯一的,即多行可以共享同一键值。 有关详细信息,请参阅 创建唯一索引。
每当修改了表数据后,都会自动维护表或视图的索引。
有关其他类型的特殊用途索引,请参阅 Indexes 。
对表列定义了 PRIMARY KEY 约束和 UNIQUE 约束时,会自动创建索引。 例如,如果创建了表并将一个特定列标识为主键,则 数据库引擎 自动对该列创建 PRIMARY KEY 约束和索引。 有关详细信息,请参阅 Create Primary Keys 和 Create Unique Constraints。
设计良好的索引可以减少磁盘 I/O 操作,并且消耗的系统资源也较少,从而可以提高查询性能。 对于包含 SELECT、UPDATE、DELETE 或 MERGE 语句的各种查询,索引会很有用。 例如,在 SELECT Title, HireDate FROM HumanResources.Employee WHERE EmployeeID = 250
数据库中执行的查询 AdventureWorks2012 。 执行此查询时,查询优化器评估可用于检索数据的每个方法,然后选择最有效的方法。 可能采用的方法包括扫描表和扫描一个或多个索引(如果有)。
扫描表时,查询优化器读取表中的所有行,并提取满足查询条件的行。 扫描表会有许多磁盘 I/O 操作,并占用大量资源。 但是,如果查询的结果集是占表中较高百分比的行,扫描表会是最为有效的方法。
查询优化器使用索引时,搜索索引键列,查找到查询所需行的存储位置,然后从该位置提取匹配行。 通常,搜索索引比搜索表要快很多,因为索引与表不同,一般每行包含的列非常少,且行遵循排序顺序。
查询优化器在执行查询时通常会选择最有效的方法。 但如果没有索引,则查询优化器必须扫描表。 您的任务是设计并创建最适合您的环境的索引,以便查询优化器可以从多个有效的索引中选择。 SQL Server 提供 数据库引擎优化顾问 以帮助分析数据库环境并选择适当的索引。
https://msdn.microsoft.com/zh-cn/library/ms190457(v=sql.120).aspx