【问题标题】:Can we delete a UNIQUE and KEY index on id if we have a PRIMARY KEY?如果我们有 PRIMARY KEY,我们可以删除 id 上的 UNIQUE 和 KEY 索引吗?
【发布时间】:2015-01-22 11:33:21
【问题描述】:

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

  • id 上的主键
  • id 上的唯一键
  • id 上的“key”

由于 PRIMARY 键已经是唯一的,我知道 UNIQUE 键是多余的,不需要。我也明白,从这个意义上说,KEY 只不过是“索引”,所以它也是多余的。

  1. 是不是真的可以删除取UNIQUE和KEY,并且和主键索引提供的速度一样?

  2. 这三个索引是否会导致 SELECT 查询变慢?

【问题讨论】:

    标签: mysql indexing primary-key


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-20
      • 2012-11-20
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      相关资源
      最近更新 更多