我们正在优化我们公司的MySQL数据库。在许多表格中,我们发现有:
由于PRIMARY键已经是唯一的,我知道UNIQUE键是多余的,不需要。我也明白,KEY在这个意义上仅仅意味着" index"所以它也是多余的。
我们是否可以删除UNIQUE和KEY并使主键索引提供相同的速度?
是否可能以某种方式使这三个索引导致SELECT查询变慢?
答案 0 :(得分:0)
是的,您可以删除唯一索引和密钥声明。 AFAIK,每个 SQL dbms都使用唯一索引实现主键约束。您可以运行explain
,删除这两个,然后再次运行explain
来验证。
冗余索引可能会稍微影响SELECT性能,因为冗余索引为查询规划器提供了更多的选择。但我希望冗余索引对INSERT和DELETE语句产生更大的影响,因为这些索引必须与表一起更新。 (只有在更新的列恰好被编入索引时,SQL UPDATE语句才需要更改索引。)