gpt4 book ai didi

sql-server - 无主键的聚集索引

转载 作者:行者123 更新时间:2023-12-02 21:26:47 24 4
gpt4 key购买 nike

一个clustered index将实际数据行存储在索引的叶级。返回到上面的示例,这意味着与主键值 123 关联的整行数据将存储在该叶节点中。

enter image description here

问题 - 如果主键不存在并且我将Name列设置为聚集索引。那么,上面的说法会不会变得矛盾呢?

最佳答案

不 - 为什么?

聚集索引将仍然在其叶级别存储实际数据页,(最初)按name列进行物理排序。

叶级别上方的索引导航结构将包含所有行的name 列值。

总体而言:没有任何变化。

主键是一个逻辑结构,旨在唯一标识表中的每一行。这就是为什么它必须是唯一且非空的。

聚类索引是一种物理构造,它将(最初)按聚类键对数据进行物理排序,并相应地排列 SQL Server 页面。

虽然在 SQL Server 中,默认情况下使用主键作为集群键,但两者不必同时存在 - 也不必与另一个同时存在。您可以拥有带有非聚集主键的表,也可以拥有没有主键的聚集表。两者皆有可能。这样做是否明智是另一个讨论 - 但技术上是可行的。

更新:如果您的主键是集群键,则可以保证唯一性(因为主键必须是唯一的)。如果您选择某个不是主键的列作为集群键,并且该列不保证唯一性,SQL Server 将在幕后向这些重复值添加一个 4 字节 (INT) 唯一符列,以确保他们是独一无二的。因此,您的 Smith 的聚集索引导航结构中可能有 SmithSmith1Smith2 等。

参见:

关于sql-server - 无主键的聚集索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10799413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com