UNIQUE(col1,col2) vs FK(col1),FK(col2)
目前,我已经启用了这两个索引,而且我不太关心每段时间的对外关系。因此,我想知道,通过拥有所有这些键,我是否获得了用于读取性能的冗余索引,或者在某些边缘情况下,它们是否不同?
我知道这两列是主键的一个很好的候选,但是作为一个团队,我们都决定将自动递增作为主键。
发布于 2019-10-11 16:03:15
MySQL希望为每个索引创建一个单独的索引。因此,您可能有三个索引:
(col1, col2)(col1)(col2)我说“可能”是因为MySQL还试图优化自动索引创建。因此,如果已经创建了第一个索引,那么就不需要第二个索引了--它们是多余的。然而,第三项是必要的。
我的推荐信?自动索引创建支持其他目的--为第一个索引强制执行唯一约束,或为第二个和第三个索引强制执行外键约束。你想让数据库做所有这些。保留unique和foreign key声明!
因此,您唯一能做的就是确保在声明外键之前知道唯一的索引。在create table中声明它就足够了--但是,为了确定,我会将unique约束放在外键约束之前。
https://stackoverflow.com/questions/58344846
复制相似问题