2

我在哪里可以找到关于如何在页面中存储数据以及如何为多列索引构建 B 树的良好表示(特别是对于 SQL 服务器,但不一定)?

我指的是类似于您在https://docs.microsoft.com/en-us/sql/relational-databases/reading-pages?view=sql-server-ver15(对于单列)中看到的内容,但扩展为多列。

单列索引的另一个例子: 在此处输入图像描述

谢谢。

4

2 回答 2

5

我发现这个例子非常有用,希望你正在寻找这样的东西。它还显示包含列(特定于 SQL-Server)。如果您不需要包含列,只需在叶节点中获取所有没有“年龄”和“性别”的内容。原始文章中有一个很好的解释(我希望你可能不需要)。

在此处输入图像描述

参考 - https://www.malinga.me/index-physical-structure-example-multi-column-non-clustered-index-with-includes/

于 2020-07-21T12:54:53.203 回答
1

索引键值首先按第一个键列排序,然后按第二个键列排序,然后 yt 完全相同,除了非叶节点上的附加列。因此,如果第一个键列是数字,第二个键列是动物的名称,则非叶子页面的范围可能如下:

                                     (1,'cat')-(1000,'horse')
                                              ^
                  (1,'cat')-(500,'snake')               (500,'tiger')-(1000,'horse') 
                           ^                                         ^
(1,'cat')-(250,'elephant')   (250,'fox')-(500,'snake')          . . .
于 2020-07-21T12:49:55.873 回答