如何在SQL Server中实现聚簇索引

时间:2013-10-13 03:54:34

标签: sql-server indexing

我用谷歌搜索,但仍然有点困惑。如何在SQL Server中实现聚簇索引?它是用B +树实现的吗?

2 个答案:

答案 0 :(得分:0)

搜索可能很难。但是,通过在Google上搜索“sql server clustered index data structure”,first link就是MS的答案。他们声称如下

默认情况下,聚簇索引具有单个分区。当聚簇索引具有多个分区时,每个分区都有一个B树结构,其中包含该特定分区的数据。 (答案适用于Sql 2005& 2008)

就个人而言,我不一定相信这样的答案是准确的,因为MS说它是如此(文档不匹配实现太常见了)我知道SQL服务器可以创建一个散列索引,但是给出了散列索引不会“聚集数据值”,MS似乎不太可能使用散列索引作为聚簇索引。现在,如果MS在未来添加了位图索引支持,那么这可能适用于聚簇索引。

答案 1 :(得分:0)

为了让您大致了解,您可以在物理上对磁盘上的记录进行排序。这意味着硬盘上的记录维护索引确定的顺序。但是,你可以使用常规的“非聚集”索引,而不是指向存储了值的叶子,而是指向硬盘上的记录。

这种机制非常简单并且被广泛使用。例如,PostgreSQL具有基于非聚集索引对表进行聚类的功能,该索引强制执行磁盘上数据的物理顺序。

这不是s-f所以如果集群索引的文档描述与实现之间存在相关差异,我会感到非常惊讶。这也是一个核心概念,这将是一个糟糕的主意。