首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >*UNIQUE(col1,col2)* vs *FK(col1),FK(col2)*

*UNIQUE(col1,col2)* vs *FK(col1),FK(col2)*
EN

Stack Overflow用户
提问于 2019-10-11 16:00:02
回答 1查看 28关注 0票数 0

UNIQUE(col1,col2) vs FK(col1),FK(col2)

目前,我已经启用了这两个索引,而且我不太关心每段时间的对外关系。因此,我想知道,通过拥有所有这些键,我是否获得了用于读取性能的冗余索引,或者在某些边缘情况下,它们是否不同?

我知道这两列是主键的一个很好的候选,但是作为一个团队,我们都决定将自动递增作为主键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-11 16:03:15

MySQL希望为每个索引创建一个单独的索引。因此,您可能有三个索引:

  • (col1, col2)
  • (col1)
  • (col2)

我说“可能”是因为MySQL还试图优化自动索引创建。因此,如果已经创建了第一个索引,那么就不需要第二个索引了--它们是多余的。然而,第三项是必要的。

我的推荐信?自动索引创建支持其他目的--为第一个索引强制执行唯一约束,或为第二个和第三个索引强制执行外键约束。你想让数据库做所有这些。保留uniqueforeign key声明!

因此,您唯一能做的就是确保在声明外键之前知道唯一的索引。在create table中声明它就足够了--但是,为了确定,我会将unique约束放在外键约束之前。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58344846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档