0

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

4

2 回答 2

0

为了给你一个大致的想法,你有一个物理上在磁盘上排序的记录树。这意味着硬盘驱动器上的记录保持由索引确定的顺序。但除此之外,您有常规的“非聚集”索引,而不是指向存储值的叶子,而是指向硬盘驱动器上的记录。

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

这不是科幻小说,所以如果聚集索引的文档描述和实现之间存在相关差异,我会感到非常惊讶。这也是一个如此核心的概念,这将是一个糟糕的想法。

于 2013-10-15T11:58:25.390 回答
0

搜索可能很困难。但是,在 Google 上搜索“sql server clustered index data structure”,第一个链接是来自 MS 的答案。他们声称如下

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

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

于 2013-10-13T04:40:27.683 回答