在一个只有两列的复合PK连接表中,我需要另一个索引吗?

时间:2015-03-06 17:26:42

标签: sql-server tsql sql-server-2012 ssms

请考虑以下事项:

tbl_Book

  • BookID PK int identity(1,1)

tbl_Author

  • AuthorID PK int identity(1,1)

tbl_BookAuthor

  • BookID FK int
  • AuthorID FK int

我有一个复合/复合主键(BookID,AuthorID)。更具体地说,基于SSMS设计器的默认值:

  • 列:( BookID ASC,AuthorID ASC)
  • 独一无二:是
  • 类型:主键
  • Create As Clustered:是

在任何一点上,我是否需要在任何一个列(BookID,AuthorID)上使用非聚集索引,或者仅在它是唯一的时候它是不相关的并且将始终只是表中的那两列,作为复合键

2 个答案:

答案 0 :(得分:0)

如果针对此表运行的唯一查询指定了复合键的两个值(或仅指定第一个值),则不需要其他索引。我认为你可能想要另一个索引的唯一一次是你是否只对复合键中的第二列进行了查询(并且不能将它作为第一列,因为你也对该列也有查询)。

简短回答:事情应该没那么好。

答案 1 :(得分:0)

最有可能的是,对BookID的搜索将是索引搜索

对AuthorID(没有BookID)的搜索将是索引扫描

如果你永远不会只搜索第二个,那就无所谓了

似乎只对作者进行搜索更有可能,所以我会切换该顺序。