我对数据库如何存储主键的理解的限制是基于聚集键的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/