索引是对数据库表中一个或多个列(例如,employee   表的姓氏   (lname)   列)的值进行排序的结构。
索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行。

聚集
表或视图根据聚集索引进行排序和磁盘存储

索引类型 说明 其他信息

聚集

表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。

聚集索引基于聚集索引键按顺序排序和存储表或视图中的数据行。聚集索引按 B 树索引结构实现,B 树索引结构支持基于聚集索引键值对行进行快速检索。

聚集索引设计指南

聚集索引结构

非聚集

既 可以使用聚集索引来为表或视图定义非聚集索引,也可以根据堆来定义非聚集索引。非聚集索引中的每个索引行都包含非聚集键值和行定位符。此定位符指向聚集索 引或堆中包含该键值的数据行。索引中的行按索引键值的顺序存储,但是不保证数据行按任何特定顺序存储,除非对表创建聚集索引。

非聚集索引设计指南

非聚集索引结构

唯一

唯一索引确保索引键不包含重复的值,因此,表或视图中的每一行在某种程度上是唯一的。

聚集索引和非聚集索引都可以是唯一索引。

唯一索引设计指南

包含列索引

一种非聚集索引,它扩展后不仅包含键列,还包含非键列。

具有包含列的索引

索引视图

视图的索引将具体化(执行)视图,并将结果集永久存储在唯一的聚集索引中,而且其存储方法与带聚集索引的表的存储方法相同。创建聚集索引后,可以为视图添加非聚集索引。

设计索引视图

全文

一种特殊类型的基于标记的功能性索引,由 Microsoft SQL Server 全文引擎生成和维护。用于帮助在字符串数据中搜索复杂的词。

全文索引填充

空间

利用空间索引,可以更高效地对 geometry 数据类型的列中的空间对象(空间数据)执行某些操作。空间索引可减少需要应用开销相对较大的空间操作的对象数。

空间索引概述

筛选

一种经过优化的非聚集索引,尤其适用于涵盖从定义完善的数据子集中选择数据的查询。筛选索引使用筛选谓词对表中的部分行进行索引。与全表索引相比,设计良好的筛选索引可以提高查询性能、减少索引维护开销并可降低索引存储开销。

筛选索引设计准则

XML

xml 数据类型列中 XML 二进制大型对象 (BLOB) 的已拆分持久表示形式。

XML 数据类型列的索引


  • 一个表如果建有大量索引会影响 INSERT、UPDATE、DELETE 和 MERGE 语句的性能,因为当表中的数据更改时,所有索引都须进行适当的调整。
    • 避免对经常更新的表进行过多的索引,并且索引应保持较窄,就是说,列要尽可能少。
    • 使用多个索引可以提高更新少而数据量大的查询的性能。大量索引可以提高不修改数据的查询(例如 SELECT 语句)的性能,因为查询优化器有更多的索引可供选择,从而可以确定最快的访问方法。
  • 对小表进行索引可能不会产生优化效果,因为查询优化器在遍历用于搜索数据的索引时,花费的时间可能比执行简单的表扫描还长。因此,小表的索引可能从来不用,但仍必须在表中的数据更改时进行维护。
Posted on 2009-08-17 01:28  Yongming Ye  阅读(129)  评论(0)    收藏  举报