日期:2014-05-19  浏览次数:20555 次

问:Cluster Index和Noncluster Index的区别(100分)
问:Cluster   Index和Noncluster   Index的区别,主要是使用上的区别

------解决方案--------------------
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 个
------解决方案--------------------
呵呵。這樣的問題不抄書才怪。。