在 SQL Server 中,短语“索引键”的“键”部分是什么意思?钥匙是数字吗?它是什么?
如果我有一个包含名为 LastNames 的列的数据表,并且我有一个聚集索引,那么每一行的“键”是否只是姓氏?“关键值”的示例是否类似于“库珀”?
我问是因为在聚集表的非聚集索引中,非聚集索引的叶页包含聚集索引键。但是它包含索引“键”是什么意思?这是否意味着存储在聚集索引的叶页(即数据页)上的实际列数据,用于具有聚集索引的列?
在 SQL Server 中,短语“索引键”的“键”部分是什么意思?钥匙是数字吗?它是什么?
如果我有一个包含名为 LastNames 的列的数据表,并且我有一个聚集索引,那么每一行的“键”是否只是姓氏?“关键值”的示例是否类似于“库珀”?
我问是因为在聚集表的非聚集索引中,非聚集索引的叶页包含聚集索引键。但是它包含索引“键”是什么意思?这是否意味着存储在聚集索引的叶页(即数据页)上的实际列数据,用于具有聚集索引的列?
如果我们谈论的是当前支持的 Microsoft SQL Server 版本,那么非聚集索引确实包含聚集索引键的副本。
这是强调保持键尽可能窄的原因之一。显然,由 组成的聚集键
integer
在非聚集索引中占用的空间要少得多,因此也比键为 时需要更少的 I/Ovarchar(128)
。注意:如果您有一个“不唯一”的聚集索引,SQL Server 将在键中插入一个隐藏整数,以使其唯一。根据定义,聚集索引必须是唯一的。当然,这个隐藏的数字也将包含在非聚集索引中。
如果您使用的是其他 SQL 实现,则细节可能会有所不同。
编辑:[Re question in comment}如果你有:
Clustered Index
on columnLastName
和non-clustered index
on columnFirstName
,这是两个独立的索引。控制表的
clustered index
排序顺序,其中包含表的所有数据。因此,表中clustered index
有clustered index key
onLastName
和其余数据。clustered index
可以提供答案。将在其中包含和
non-clustered index
的非聚集值。根据依赖于查询更多细节的优化器决策,该索引可用于满足查询。FirstName
Cluster Key
LastName