Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当非聚集索引有许多具有相同值的键时,它是如何工作的_Sql_Sql Server_Indexing_Non Clustered Index - Fatal编程技术网

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

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) 真的吗:所有表都应该有一个主聚

假设我有一个包含列(id、名称、性别、年龄)的

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

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


真的吗:所有表都应该有一个主聚集键。。。。堆是一堆热气腾腾的数据——根本不推荐@marc_s,拥有这个主聚集键将防止不可用的合成非聚集索引,对吗?例如,如果我在合成的NC索引中有键(ID asc,FirstName asc)。由于ID从不重复,FirstName将永远不会被排序,因此它是无用的。因此,这里最好的方法是在ID中使用聚集索引,例如,使用FirstName和LastName组合NC索引。我说得对吗?