Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 server 2008 为什么SQL Server 2008建议将主键列作为索引中的包含列_Sql Server 2008_Indexing - Fatal编程技术网

Sql server 2008 为什么SQL Server 2008建议将主键列作为索引中的包含列

Sql server 2008 为什么SQL Server 2008建议将主键列作为索引中的包含列,sql-server-2008,indexing,Sql Server 2008,Indexing,SQLServer2008告诉我在Included列字段的索引中包含主键。我以为PK是自动返回的,包含所有索引?否-不是主键-聚类键是 默认情况下,SQL Server中的情况是相同的,但不必如此。很可能在这个表中,PK不同于集群键。在这种情况下,索引将不了解PK 主键是一个逻辑结构,用于唯一且清晰地标识表中的每一行。您可以将其用于FK约束等 另一方面,集群键是物理索引——它是存储实际物理数据的“街道地址”或页码。因此,它包含在同一个表的每个非聚集索引中—一旦在非聚集索引中找到一个条目,它将用于

SQLServer2008告诉我在Included列字段的索引中包含主键。我以为PK是自动返回的,包含所有索引?

否-不是主键-聚类键是

默认情况下,SQL Server中的情况是相同的,但不必如此。很可能在这个表中,PK不同于集群键。在这种情况下,索引将不了解PK

主键是一个逻辑结构,用于唯一且清晰地标识表中的每一行。您可以将其用于FK约束等

另一方面,集群键是物理索引——它是存储实际物理数据的“街道地址”或页码。因此,它包含在同一个表的每个非聚集索引中—一旦在非聚集索引中找到一个条目,它将用于查找实际的数据行

更新:好吧,我忍不住问“索引女王”金伯利·特里普,她对这个话题的看法——以下是她的答案:

如果PK实际上是CL密钥,则 你是对的…它会自动地 在那里。至于他在哪里 被告知–我不确定(DMV、DTA、, 某处。不管怎样,我肯定 不管他用什么工具 按查询所需的内容进行。 也就是说,这个工具根本就没用 看看是不是CL钥匙… 明确地添加它并不意味着添加它 两次,所以这不是什么大不了的事 全部


这有用吗

正确,谢谢你的澄清。在本例中,主键与表中的聚集键相同。@Raine:好的,在这种情况下,您是对的-我希望聚集键列=主键列已经包含在非聚集索引中。六羟甲基三聚氰胺六甲醚。。。不知道为什么SQL Server会建议将此列作为包含的列,真的。。。。