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

时间:2010-03-14 21:31:17

标签: sql-server-2008 indexing

SQL Server 2008告诉我在“包含的列”字段中的索引中包含主键。我以为PK是自动返回的所有索引?

1 个答案:

答案 0 :(得分:6)

否 - 不是主键 - 群集密钥是。

默认情况下,SQL Server中的情况相同 - 但并非必须如此。很可能在这个表中,PK与集群密钥不同。在这种情况下,索引将不了解PK。

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

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

更新:好吧,所以我无法抗拒地问“索引女王”金伯利·特里普关于她对这个话题的看法 - 这是她的回答:

  

如果PK实际上是CL键那么   你是对的......它会自动化   在那里。至于“他在哪里”   告诉我 - 我不确定(DMV,DTA,   某处???)。无论如何,我确定   无论他使用什么工具都是   按照查询所需的内容进行操作。   意思是,该工具甚至没有   看看它是否是CL键......   明确添加它不会添加它   两次,所以这并不是什么大不了的事   所有

这有帮助吗?