一个表中的外键具有高读取性能,还是另一个具有两个主键的表?

时间:2016-12-18 08:06:29

标签: mysql sql-server database database-design relational-database

我想知道女巫对于高读取性能更好。 一个表中的外键具有高读取性能或另一个具有复合键的表?

  

在图1" idInvoice"可以为空的一些Sanads没有因素

Q1-例如,我想列出所有票据发票或查找是否有任何特殊票据发票。

Q2-如果" idInvoice"哪一个更好?不能为空。

  

如图一

表发票:

idInvoice //Primary key
invoiceNumber
value
costumerId

表注:

idNote //Primary key
type
liable
credit
idInvoice // Foreign key (Nullable)

OR

  

图2

表发票:

idInvoice //Primary key
invoiceNumber
value
costumerId

表注:

idNote //Primary key
type
liable
credit

表InvoiceNote:

idNote //composite key - Foreign key
idInvoice //composite key - Foreign key

1 个答案:

答案 0 :(得分:1)

答案围绕“很多:很多”而不是“1:很多”。

这是多少关系吗?如果是,请按照提示here进行操作。请注意,它确实有一个复合PK,以及一个用于相反方向映射的索引。

如果这是1:多关系,也许“很多”有时为“0”,那么正确的技巧是在其中一个表中有一个id用于链接到另一个表(我们的没有实际的FK)。并且NULL可能是表示“无”的正确值。