在数据库设计领域,多对多关系提出了一个问题:应该映射表的主键可以是相关表中外键的组合,或者是自动递增的代理项键?
根据反对代理键的论点,创建复合主键(PartID、DeviceID)要求物理磁盘按该顺序排序。在现有条目 (Part1/Device1) 和 (Part2/Device3) 之间插入新记录 (Part1/Device3) 需要大量数据改组,这对于大型表来说会出现问题。
复合主键的支持者驳回了这些担忧,声称:
对于两列多对多映射,在复合键和代理键之间进行选择对性能的影响很小。然而,对于更复杂的映射或繁重的插入工作负载,代理键可能会提供一些优势,例如:
在大多数情况下,多对多表的复合键和代理键之间的选择是一个偏好问题。对于简单的两列映射,复合主键提供了简单性和唯一性。然而,对于复杂的映射或高插入工作负载,代理键可以提供更好的性能和数据完整性。
以上是多对多表的复合主键或代理主键:哪个性能更好?的详细内容。更多信息请关注PHP中文网其他相关文章!