Igo*_*tis 2 sql-server clustered-index
答案是肯定的。从某种意义上说,SQL Server 将通过将 4 字节附加到键来使其独一无二。鉴于聚集索引用于数据寻址目的(正确?),这是有道理的。
根据我的研究,似乎 SQL Server 也要求非聚集索引也是唯一的。当使用非唯一列时,SQL Server 会附加一个 4 字节的“uniquefier”值以使其唯一。那是对的吗?
为什么 SQL Server 要求非聚集索引使用唯一键?
可能它大大简化了引擎,因为您现在可以处理单个行。
想象一下,您正在对一IsMale bit列进行索引,并且有 100 万个“男性”值。现在,您要精确寻址这些行之一以将其删除。该索引有 100 万行,仅此true而已。我相信这是可能的,但独特性使设计更加优雅。
锁定要求索引行是唯一可识别的。