初恋小盗 snh48mv:Cluster Index和Noncluster Index的区别

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 17:13:30
Cluster   Index和Noncluster   Index的结构都是平衡树。它们的主要区别是Cluster   Index的叶子节点是DATA   PAGE而Noncluster   Index的叶子节点是数据在DATA   PAGE中的指针

Cluster   Index使表记录按物理地址排序,唯一(一般被主键占用)
Noncluster   Index使表记录按逻辑地址排序,多个
聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻

Cluster   Index   在表中只能有一个,而Noncluster   Index在表中可以有多个,
通常下面情况可以考虑设置为Cluster   Index   :
1含数量有限的唯一值的列. 
2用下列运算符返回一个范围值的查询:BETWEEN、> 、> =、 <   和   <=。 
3回大结果集的查询。
当索引值唯一时,使用聚集索引查找特定的行也很有效率,定义聚集索引键时使用的列越少越好
可考虑将聚集索引用于: 
包含大量非重复值的列。
使用下列运算符返回一个范围值的查询:BETWEEN、> 、> =、 <   和   <=。
被连续访问的列。
返回大型结果集的查询。


经常被使用联接或   GROUP   BY   子句的查询访问的列;一般来说,这些是外键列。对   ORDER   BY   或   GROUP   BY   子句中指定的列进行索引,可以使   SQL   Server   不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。


OLTP   类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。 
聚集索引不适用于: 

频繁更改的列 
这将导致整行移动(因为   SQL   Server   必须按物理顺序保留行中的数据值)。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。

宽键 
来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。


每个表中只能创建一个聚集索引,每个表可以创建的非聚集索引最多为   249   个