索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。
聚集
表或视图根据聚集索引进行排序和磁盘存储
| 索引类型 | 说明 | 其他信息 |
|---|---|---|
| 聚集 | 表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。 聚集索引基于聚集索引键按顺序排序和存储表或视图中的数据行。聚集索引按 B 树索引结构实现,B 树索引结构支持基于聚集索引键值对行进行快速检索。 | |
| 非聚集 | 既 可以使用聚集索引来为表或视图定义非聚集索引,也可以根据堆来定义非聚集索引。非聚集索引中的每个索引行都包含非聚集键值和行定位符。此定位符指向聚集索 引或堆中包含该键值的数据行。索引中的行按索引键值的顺序存储,但是不保证数据行按任何特定顺序存储,除非对表创建聚集索引。 | |
| 唯一 | 唯一索引确保索引键不包含重复的值,因此,表或视图中的每一行在某种程度上是唯一的。 聚集索引和非聚集索引都可以是唯一索引。 | |
| 包含列索引 | 一种非聚集索引,它扩展后不仅包含键列,还包含非键列。 | |
| 索引视图 | 视图的索引将具体化(执行)视图,并将结果集永久存储在唯一的聚集索引中,而且其存储方法与带聚集索引的表的存储方法相同。创建聚集索引后,可以为视图添加非聚集索引。 | |
| 全文 | 一种特殊类型的基于标记的功能性索引,由 Microsoft SQL Server 全文引擎生成和维护。用于帮助在字符串数据中搜索复杂的词。 | |
| 空间 | 利用空间索引,可以更高效地对 geometry 数据类型的列中的空间对象(空间数据)执行某些操作。空间索引可减少需要应用开销相对较大的空间操作的对象数。 | |
| 筛选 | 一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。筛选索引使用筛选谓词对表中的部分行进行索引。与全表索引相比,设计良好的筛选索引可以提高查询性能、减少索引维护开销并可降低索引存储开销。 | |
| XML | xml 数据类型列中 XML 二进制大型对象 (BLOB) 的已拆分持久表示形式。 |
- 一个表如果建有大量索引会影响 INSERT、UPDATE、DELETE 和 MERGE 语句的性能,因为当表中的数据更改时,所有索引都须进行适当的调整。
- 避免对经常更新的表进行过多的索引,并且索引应保持较窄,就是说,列要尽可能少。
- 使用多个索引可以提高更新少而数据量大的查询的性能。大量索引可以提高不修改数据的查询(例如 SELECT 语句)的性能,因为查询优化器有更多的索引可供选择,从而可以确定最快的访问方法。
- 避免对经常更新的表进行过多的索引,并且索引应保持较窄,就是说,列要尽可能少。
- 对小表进行索引可能不会产生优化效果,因为查询优化器在遍历用于搜索数据的索引时,花费的时间可能比执行简单的表扫描还长。因此,小表的索引可能从来不用,但仍必须在表中的数据更改时进行维护。
浙公网安备 33010602011771号