如何聚集索引的工作时,它具有相同值的许多键

问题描述:

假设我有一个表列(ID,姓名,性别,年龄)如何聚集索引的工作时,它具有相同值的许多键

如果我有一个非聚集索引列在“名称”中,如果我有10个名为“Lucas”的人,会发生什么?索引是否知道他指的是哪一个“卢卡斯”? 如果有那么多Lucas'在B-Tree树叶的不同页面上分开,索引是否仍然知道如何找到它们以及他必须为每个“Lucas”指出哪一行?

+0

真:所有的表**应该有**的主聚集键....堆是数据热气腾腾的一堆 - *** ***不推荐在所有! – 2014-12-04 06:08:02

+0

@marc_s,拥有这个主聚簇键将防止无用的组合非聚簇索引,对吧?例如,如果我在我编写的NC索引中有键(ID asc,FirstName asc)。由于ID从不重复,FirstName将永远不会被排序,因此它是无用的。因此,这里最好的事情是使用ID中的聚集索引和例如带有FirstName和LastName的组合NC索引。我对吗? – Mucida 2014-12-04 12:04:15

•如果表是堆,这意味着它没有聚集索引,则行定位器是指向该行的指针。指针由文件标识符(ID),页码和页面上的行编号构成。整个指针被称为行ID(RID)。

http://technet.microsoft.com/en-us/library/ms177484(v=sql.105).aspx