【问题标题】:Add two indexes to the same field in MySql在 MySql 中为同一字段添加两个索引
【发布时间】:2013-01-29 11:12:18
【问题描述】:

我有一张这样的桌子:

某事
一个 [INT]
b [INT]
c [INT]

...其中 abc 是独立的外键,指向三个不同的表。编号。由于我想让所有 regs 都是唯一的,并且在阅读了 this great answer 之后,我认为我应该以这种方式创建一个新索引:UNIQUE INDEX(a, b, c) 并且(在我的情况下)执行 IGNORE INSERTS。

但是正如您所看到的,我将为每一列设置一个 KEY,然后再添加一个包含所有三个的额外 UNIQUE INDEX。这是正常现象吗?我觉得很奇怪,我从来没有见过。

【问题讨论】:

    标签: mysql indexing unique-key


    【解决方案1】:

    在多个索引中包含一列是完全正常和合理的。但是,如果 (a, b, c) 的组合足以唯一标识一行,那么您似乎需要一个 PRIMARY 索引而不是 UNIQUE 索引(技术上几乎没有区别,但在语义上它可能是更好的选择)。

    【讨论】:

    • 谢谢。对于那些不知道 PRIMARY 和 UNIQUE (stackoverflow.com/a/708508) 之间区别的人来说,这也是一个很好的答案。几分钟后会接受你的回答;D
    【解决方案2】:

    如果某项 (a, b, c) 将导致对唯一索引的需求无效,则创建主键。如果您的主键是Something(a,b)并且您想要一个唯一索引(a,b,c),那么额外的唯一索引将是有意义的。但是由于所有三列都是外键,所以主键索引就是你的。

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 2013-12-14
      • 1970-01-01
      相关资源
      最近更新 更多