数据究竟存储在SQL Server中的哪个位置?叶节点还是非叶节点?

时间:2017-05-26 14:35:48

标签: sql-server indexing

在阅读Stackoverflow上的一些文章和一些答案之后,我的宝宝心灵已经开始充斥着信息。然而,我很困惑,确切的数据存储在SQL Server中。

我现在所知道的是:

  • 该页面是数据存储在SQL Server中的基本单元
  • SQL Server使用二叉树来存储数据
  • 有两种类型的节点:叶子页面和非叶子页面
  • 叶页是位于B-Tree
  • 末尾的页面
  • 索引存储在叶页

我的问题:

  1. 数据是否存储在叶子页面中?
  2. 什么存储在非叶子页面?
  3. 如果在叶子页面上创建了索引,那么它们如何在不经过整个B树非叶子节点的情况下首先检查SQL Server引擎?这不是很费时间。
  4. 到目前为止我读过的内容:

    谢谢

1 个答案:

答案 0 :(得分:0)

SQL Server使用平衡树来存储索引,而不是数据。

有两种类型的表:堆和群集。堆没有聚集索引,在这种情况下,数据存储在没有订单的页面中。

当表具有聚簇索引时,索引会获取自身的数据,数据页将成为索引的叶级别。

非叶​​子页面使用索引键存储索引,指导在树中搜索键。

理解的简单方法是考虑字符串键和字母表:非叶级别可以注册字母表中的每个字母,并将搜索到的字母指向树中的正确页面。