考虑以下:
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 回答
如果针对此表运行的唯一查询指定了复合键的两个值(或仅指定第一个值),则不需要其他索引 . 我认为你可能想要另一个索引的唯一一次是你是否只对复合键中的第二列进行了查询(并且不能将它作为第一列,因为你也对该列也有查询) .
简短的回答:事情应该是正常的 .
最有可能的是,对BookID的搜索将是索引搜索
对AuthorID(没有BookID)的搜索将是索引扫描
如果你永远不会只搜索第二个,那就无所谓了
似乎只对作者进行搜索的可能性更大,所以我会切换该顺序 .