大 table 与小 table 的外键

Foreign key with large table vs small table

具有较大 table 的外键关系是否对性能有影响?

CREATE TABLE CHARTOFACCOUNT --Contains all accounts
(
    AccountNo VARCHAR(23) PRIMARY KEY,
    --,
)

CREATE TABLE DEPOSITACCOUNT --Contains all deposit accounts(row less than CHARTOFACCOUNT)
(
    AccountNo VARCHAR(23) PRIMARY KEY,
    --,
)

CREATE TABLE DEPOSITACCOUNTSTATUS --Contains all Deposit account status 1 to 1 relation
(
    AccountNo VARCHAR(23) PRIMARY KEY,
    --,    
)

DEPOSITACCOUNTCHARTOFACCOUNT 有外键关系。现在,当 DEPOSITACCOUNTSTATUS 出现时,我可以与 DEPOSITACCOUNTCHARTOFACCOUNT 建立外键关系,两者都将有效。但是由于 CHARTOFACCOUNT 包含的行数多于 DEPOSITACCOUNT 是否存在任何性能问题?

这听起来像是过早优化的情况。

根据您尝试建模的系统选择外键,而不仅仅是因为您认为可能存在性能问题。

你说:

I could make foreign key relation with DEPOSITACCOUNT or CHARTOFACCOUNT and both will be valid

这让我觉得您的设计可能有问题。 CHARTOFACCOUNT table 存储与 DEPOSITACCOUNT table 不同的是什么?

为什么存款账户与其他账户类型不同?为什么不将它们存储在类型为属性的 Account table 中?

为什么存款账户状态与账户本身分开存储?如果 table 之间存在一对一关系,您可以将该信息移至 Account table.

基本上,您有三个具有相同主键的 table。假设您在 tables 上将它们设为聚集索引,那么 tables 之间的访问将非常快。

你应该建立你的关系,使它们有意义。从命名方案来看,我猜想 DepositAccountStatusDepositAccount 有关。因此,我会将外键关系置于 table.

这不是性能问题。这只是正确地对数据建模。

另一个问题是为什么状态table和DepositAccount有相同的主键。为什么不把状态直接放在那个 table?