gpt4 book ai didi

mysql - 这些索引之间的 SELECT 查询速度差异 : *UNIQUE(col1, col2)* 与 *FK(col1)、FK(col2)*

转载 作者:行者123 更新时间:2023-11-29 09:32:43 27 4
gpt4 key购买 nike

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

我目前启用了两个索引,并且我不太关心外部关系本身。所以我想知道通过拥有所有这些键,我是否会获得冗余索引以提高读取性能,或者它们在某些边缘情况下是否有所不同?

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

最佳答案

MySQL 希望为每个索引创建一个单独的索引。所以你可能有三个索引:

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

我说“可能”是因为MySQL也尝试优化自动索引创建。因此,如果第一个索引已经创建,那么第二个索引就不需要了——它们是多余的。不过,第三个是需要的。

我的推荐?自动索引创建支持其他目的——对第一个索引强制执行唯一约束,或对第二个和第三个索引强制执行外键约束。您希望数据库完成所有这些工作。保留唯一外键声明!

因此,您唯一能做的就是确保在声明外键之前知道唯一索引。在创建表中声明它应该就足够了——但是,为了确定起见,我会将unique约束放在外键约束之前。

关于mysql - 这些索引之间的 SELECT 查询速度差异 : *UNIQUE(col1, col2)* 与 *FK(col1)、FK(col2)*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58344846/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com