Sql 当非聚集索引有许多具有相同值的键时,它是如何工作的
假设我有一个包含列(id、名称、性别、年龄)的堆表 如果我在“name”列中有一个非聚集索引,那么如果我有10个名为“Lucas”的人会怎么样?索引是否知道他指的是哪一个“卢卡斯”? 如果有这么多的Lucas'在B-树叶子上的不同页面中分开,索引是否仍然知道如何找到它们,以及他必须为每个“Lucas”指向哪一行 •如果表是一个堆,这意味着它没有聚集索引,则行定位器是指向该行的指针。指针是根据文件标识符(ID)、页码和页面上的行号构建的。整个指针称为行ID(RID)Sql 当非聚集索引有许多具有相同值的键时,它是如何工作的,sql,sql-server,indexing,non-clustered-index,Sql,Sql Server,Indexing,Non Clustered Index,假设我有一个包含列(id、名称、性别、年龄)的堆表 如果我在“name”列中有一个非聚集索引,那么如果我有10个名为“Lucas”的人会怎么样?索引是否知道他指的是哪一个“卢卡斯”? 如果有这么多的Lucas'在B-树叶子上的不同页面中分开,索引是否仍然知道如何找到它们,以及他必须为每个“Lucas”指向哪一行 •如果表是一个堆,这意味着它没有聚集索引,则行定位器是指向该行的指针。指针是根据文件标识符(ID)、页码和页面上的行号构建的。整个指针称为行ID(RID) 真的吗:所有表都应该有一个主聚
真的吗:所有表都应该有一个主聚集键。。。。堆是一堆热气腾腾的数据——根本不推荐@marc_s,拥有这个主聚集键将防止不可用的合成非聚集索引,对吗?例如,如果我在合成的NC索引中有键(ID asc,FirstName asc)。由于ID从不重复,FirstName将永远不会被排序,因此它是无用的。因此,这里最好的方法是在ID中使用聚集索引,例如,使用FirstName和LastName组合NC索引。我说得对吗?