标签:blog http io os 使用 ar strong sp 数据
聚集索引基于数据行的键值在表内排序和存储这些数据行, 每个表只能有一个聚集索引, 因为数据行本身只能按一个顺序存储. 有关聚集索引体系结构的详细信息, 请参阅 聚集索引结构.
每个表几乎都对列定义聚集索引来实现下列功能:
可用于经常使用的查询.
可用于范围查询.
如果未使用 UNIQUE 属性创建聚集索引, 数据库引擎将向表自动添加一个 4 字节的 uniqueifier 列. 必要时, 数据库引擎将向行自动添加一个 uniqueifier 值以使每个键唯一, 此列和列值供内部使用, 用户不能查看或访问.
查询注意事项
在创建聚集索引之前, 应先了解数据是如何被访问的. 考虑对具有以下特点的查询使用聚集索引:
使用运算符(如 BETWEEN、>、>=、< 和 <=)返回一系列值.
使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行物理相邻. 例如, 如果某个查询在一系列销售订单号间检索记录, SalesOrderNumber 列的聚集索引可快速定位包含起始销售订单号的行, 然后检索表中所有连续的行, 直到检索到最后的销售订单号.
返回大型结果集.
使用 JOIN 子句; 一般情况下, 使用该子句的是外键列.
一般情况下, 定义聚集索引键时使用的列越少越好, 考虑具有下列一个或多个属性的列:
唯一或包含许多不重复的值
例如, 雇员 ID 唯一地标识雇员. EmployeeID 列的聚集索引或 PRIMARY KEY 约束将改善基于雇员 ID 号搜索雇员信息的查询的性能. 另外, 可对LastName、FirstName、MiddleName 列创建聚集索引, 因为经常以这种方式分组和查询雇员记录, 而且这些列的组合还可提供高区分度.
按顺序被访问
例如, 产品 ID 唯一地标识 AdventureWorks2008R2 数据库的 Production.Product 表中的产品. 在其中指定顺序搜索的查询(如 WHERE ProductID BETWEEN 980 and 999)将从 ProductID 的聚集索引受益, 这是因为行将按该键列的排序顺序存储.
由于保证了列在表中是唯一的, 所以定义为 IDENTITY.
经常用于对表中检索到的数据进行排序.
按该列对表进行聚集(即物理排序)是一个好方法, 它可以在每次查询该列时节省排序操作的成本.
聚集索引不适用于具有下列属性的列:
频繁更改的列
这将导致整行移动, 因为数据库引擎必须按物理顺序保留行中的数据值. 这一点要特别注意, 因为在大容量事务处理系统中数据通常是可变的.
创建聚集索引时, 可指定若干索引选项, 因为聚集索引通常都很大, 所以应特别注意下列选项:
SORT_IN_TEMPDB
DROP_EXISTING
FILLFACTOR
ONLINE
有关详细信息,请参阅 设置索引选项.
标签:blog http io os 使用 ar strong sp 数据
原文地址:http://www.cnblogs.com/zll-20140222/p/4025674.html