sql-server - SQL Server 如何存储复合主键?

标签 sql-server primary-key storage

我对数据库如何存储主键的理解的限制是基于聚集键的btree,每个节点存储其余的列。

自从上个世纪大学以来,我就没有更新过这种理解,并且很想知道 SQL Server 与单个主键相比如何存储复合主键。

有人可以帮我指出一些细节吗?

最佳答案

复合键与普通的单列键完全相同,但更长并且由多个值组成。假设您在单个列(例如 A)上有一个 B 树。非叶页包含具有 A 列值的槽以及指向叶页的指针。叶页包含带有 A 列值(键)的槽,后跟该行的所有其他列。复合键完全相同,但槽中的值将是复合值,按照它们在键中声明的顺序排列。

Anatomy of a Page 对 SQL Server 数据页的内部结构有很好的描述。 。此外,Kelan Delaney 的旧 SQL 7.0 书中的第 6 章可在 Technet 上在线获取:Tables 。仍然是一个很好的资源,基础知识仍然适用于 SQL 2008 R2(更改的内容主要围绕最大类型和压缩设置,但大部分信息仍然有效)。

关于sql-server - SQL Server 如何存储复合主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3384266/

相关文章:

javascript - 是否有类似 Solr 或 Elasticsearch 的东西只能在 Javascript 中在客户端上使用?

sql - 如何在 SQL Server 中用一个单词替换一列中的重复单词

sql-server - ntext 与 int MSSQL Server 不兼容

如果列的组合(允许重复)是唯一的,则 MySQL 仅插入新行

sql - SQL语句出了点问题

.net - OID 键控的 blob 存储在程序员中是否有市场?

c# - .NET - 使用多个 SqlParameters 将异常记录到数据库并指定每个数据库列中的内容

c# - 通过 ASP.NET 将 mpp 文件导入 SQL Server?

database - 将外键作为主键可以吗?

android - 从内部存储器读取图像android给出空指针异常