我正在处理一些链接表的工作,然后想到(危险!危险!)链接表的可能结构及其优缺点。
我提出了一些可能的连接表结构:
传统的三列模型
- id - 自动编号的主键
- table1fk - 外键
- table2fk - 外键
这是一种经典的模型,在大多数书籍中都有介绍,就这样吧。
索引的三列模型
- id - 自动编号的主键
- table1fk - 外键
INDEX ('table1fk')
- table2fk - 外键
INDEX ('table2fk')
根据我的经验,在传统模型中,您查询的字段没有被索引。我发现为外键字段建立索引确实可以提高性能,这是可以预期的。这不是一个重大的改变,但是是一个很好的优化策略。
复合键的两列 ADD PRIMARY KEY ('table1fk' , 'table2fk')
- table1fk - 外键
- table2fk - 外键
对于这个选项,我使用一个组合键来使来自table1的记录仅能与table2上的一条记录关联。由于键是组合的,所以我可以添加记录 (1,1)、(1,2)、(2,2) 而不会产生重复错误。
复合键两列选项有潜在的问题吗?它可能导致索引问题吗?性能会受到影响吗?有什么因素使其不能作为可能的选项吗?