【发布时间】:2010-03-15 14:03:02
【问题描述】:
SQL Server 2008 告诉我在包含列字段的索引中包含主键。我以为 PK 会自动返回所有索引?
【问题讨论】:
SQL Server 2008 告诉我在包含列字段的索引中包含主键。我以为 PK 会自动返回所有索引?
【问题讨论】:
否 - 不是主键 - 集群键是。
默认情况下,这在 SQL Server 中是相同的 - 但并非必须如此。很可能在此表中,PK 与集群键不同。在这种情况下,索引将不知道任何 PK。
主键是一个逻辑结构,用于唯一且清晰地标识表中的每一行。您将其用于 FK 约束等。
另一方面,集群键是物理索引 - 它是“街道地址”或存储实际物理数据的页码。因此,它包含在同一个表的每个非聚集索引中 - 一旦您在非聚集索引中找到条目,它就会用于查找实际数据行。
更新:好的,所以我忍不住向“索引女王”金伯利·特里普询问她对这个话题的看法 - 这是她的回答:
如果 PK 实际上是 CL 密钥,那么 你是对的......它会自动成为 在那里。至于他在“哪里” 告诉 – 我不确定(DMV、DTA、 某处???)。无论如何,我确信 他使用的任何工具都只是 按照查询所需的内容进行。 意思是,该工具甚至没有 看看是不是CL键…… 显式添加它不会添加它 两次,所以这没什么大不了的 全部。
这有帮助吗?
【讨论】: