SQL Server 2008告诉我在“包含的列”字段中的索引中包含主键。我以为PK是自动返回的所有索引?
答案 0 :(得分:6)
否 - 不是主键 - 群集密钥是。
默认情况下,SQL Server中的情况相同 - 但并非必须如此。很可能在这个表中,PK与集群密钥不同。在这种情况下,索引将不了解PK。
主键是一个逻辑结构,可以唯一且清晰地标识表中的每一行。你将它用于FK约束等。
另一方面,聚类键是物理索引 - 它是“街道地址”或存储实际物理数据的页码。因此,它包含在同一个表的每个非聚集索引中 - 一旦在非聚集索引中找到一个条目,它就可以查找实际的数据行。
更新:好吧,所以我无法抗拒地问“索引女王”金伯利·特里普关于她对这个话题的看法 - 这是她的回答:
如果PK实际上是CL键那么 你是对的......它会自动化 在那里。至于“他在哪里” 告诉我 - 我不确定(DMV,DTA, 某处???)。无论如何,我确定 无论他使用什么工具都是 按照查询所需的内容进行操作。 意思是,该工具甚至没有 看看它是否是CL键...... 明确添加它不会添加它 两次,所以这并不是什么大不了的事 所有的
这有帮助吗?