如果我们有一个PRIMARY KEY,我们可以删除id的UNIQUE和KEY索引吗?

时间:2015-01-22 11:33:21

标签: mysql indexing primary-key

我们正在优化我们公司的MySQL数据库。在许多表格中,我们发现有:

  • id
  • 上的主键
  • ID上的唯一键
  • "键"在id

由于PRIMARY键已经是唯一的,我知道UNIQUE键是多余的,不需要。我也明白,KEY在这个意义上仅仅意味着" index"所以它也是多余的。

enter image description here

  1. 我们是否可以删除UNIQUE和KEY并使主键索引提供相同的速度?

  2. 是否可能以某种方式使这三个索引导致SELECT查询变慢?

1 个答案:

答案 0 :(得分:0)

是的,您可以删除唯一索引和密钥声明。 AFAIK,每个 SQL dbms都使用唯一索引实现主键约束。您可以运行explain,删除这两个,然后再次运行explain来验证。

冗余索引可能会稍微影响SELECT性能,因为冗余索引为查询规划器提供了更多的选择。但我希望冗余索引对INSERT和DELETE语句产生更大的影响,因为这些索引必须与表一起更新。 (只有在更新的列恰好被编入索引时,SQL UPDATE语句才需要更改索引。)