sql-server - 为什么 SQL Server 向非唯一聚集索引添加一个 4 字节整数

标签 sql-server indexing clustered-index non-clustered-index

可以将非唯一列定义为聚簇索引和非聚簇索引。但是,如果列未定义为唯一,SQL Server 会在聚集索引的情况下向索引列添加一个 4 字节整数。这样做是为了在内部保持记录的“唯一性”,即使两个或多个记录可能具有该列的值。为什么在非聚集索引的情况下不需要这个整数?

最佳答案

非聚集索引已经包含聚集索引列,因此它可以引用与其关联的确切行。因此,对于聚集索引上的唯一标识符,非聚集索引也将包括唯一标识符。

这里有一个很好的解释:Understanding and Examining the Uniquifier in SQL Server

关于sql-server - 为什么 SQL Server 向非唯一聚集索引添加一个 4 字节整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12321905/

相关文章:

sql-server - SQL Server聚集索引: (Physical) Data Page Order

sql - 查找任何列中具有空值的所有行

SQL Server 并将时间分配为小时

mysql - 我有一个要优化的 SQL 查询。让我们来谈谈它

tsql - 重建 SQL 索引 - 何时?

postgresql - 为什么 Postgres 不在简单的 GROUP BY 上使用索引?

mysql - 数据库内存和磁盘工作分配

c# - 如何使用 Angular 和 ASP.Net Core 转换字节数组 [] 中的文件并存储在数据库中?

sql - 计算分层 SQL 数据中的子级数量

google-bigquery - 大查询 : "Clustering encountered a key that is longer than"