SQL 服务器中多列索引的结构
Structure of a Multi-column index in SQL server
我在哪里可以找到关于数据如何存储在页面中以及 B 树如何为 多列索引 构建的良好表示(特别是 SQL 服务器,但不一定)?
我指的是您在 https://docs.microsoft.com/en-us/sql/relational-databases/reading-pages?view=sql-server-ver15 中看到的内容(对于单列),但针对多列进行了扩展。
单列索引的另一个例子:
谢谢。
索引键值首先按第一个键列排序,然后按第二个键列排序,然后yt完全相同,除了在非叶节点上增加了列。因此,如果第一个键列是数字,第二个键列是动物的名称,则非叶页的范围可能如下:
(1,'cat')-(1000,'horse')
^
(1,'cat')-(500,'snake') (500,'tiger')-(1000,'horse')
^ ^
(1,'cat')-(250,'elephant') (250,'fox')-(500,'snake') . . .
我发现这个例子非常有用,希望你正在寻找这样的东西。它还显示包括列(SQL-特定于服务器)。如果您不需要 include-columns,只需在叶节点中获取没有 'age' 和 'sex' 的所有内容。原文有很好的解释(希望大家不需要)
我在哪里可以找到关于数据如何存储在页面中以及 B 树如何为 多列索引 构建的良好表示(特别是 SQL 服务器,但不一定)?
我指的是您在 https://docs.microsoft.com/en-us/sql/relational-databases/reading-pages?view=sql-server-ver15 中看到的内容(对于单列),但针对多列进行了扩展。
单列索引的另一个例子:
谢谢。
索引键值首先按第一个键列排序,然后按第二个键列排序,然后yt完全相同,除了在非叶节点上增加了列。因此,如果第一个键列是数字,第二个键列是动物的名称,则非叶页的范围可能如下:
(1,'cat')-(1000,'horse')
^
(1,'cat')-(500,'snake') (500,'tiger')-(1000,'horse')
^ ^
(1,'cat')-(250,'elephant') (250,'fox')-(500,'snake') . . .
我发现这个例子非常有用,希望你正在寻找这样的东西。它还显示包括列(SQL-特定于服务器)。如果您不需要 include-columns,只需在叶节点中获取没有 'age' 和 'sex' 的所有内容。原文有很好的解释(希望大家不需要)