Abd*_*ani 3 sql-server primary-key
将两张表建立为一对一的关系,我想考虑哪一个是更好的设计?父表(人员)的主键与子表(个人资料)的主键相同,还是为个人资料表构建另一个主键?
我认为在连接两个表时,表具有相同的主键是更好的选择,因为主键将是配置文件表上的聚集索引,因此它不会扫描整个表来获取匹配的
我同意 Charlieface 的观点,即能够在两个表中使用相同的主键字段,因为这是一对一的关系。
但我还想提一下,如果您需要为表创建单独的主键字段Profile
,并且使用辅助字段作为表的外键引用Person
,这并不一定意味着它会“扫描”当您JOIN
通过该外键字段时,整个表都会获得匹配的“。它实际上可以(并且可能会)使用索引查找操作,并且具有同样的性能(只要辅助字段上有非聚集索引)。
这是因为 SQL Server 并不关心您使用的是聚集索引字段还是非聚集索引字段集JOIN
。相反,它根据's子句中字段值的基数来确定要使用哪种类型的操作。在这种情况下,基数是指谓词返回的行数相对于各自表中的总行数。无论您使用表的主键字段作为与表相同的字段,还是使用第二个字段,基数都将是相同的。JOIN
ON
Profile
Person
归档时间: |
|
查看次数: |
1282 次 |
最近记录: |