# 删除和添加索引，为什么要先加后删

我们对待一张表创建和删除索引的原则是，先加后删。

避免索引交替期因索引缺失而引起更大业务，性能问题。

有两方面原因，分别从运维和研发的角度来谈。

1，对于运维来讲，当遇到告警DB故障时，服务器负载较高，数据库里存在大量慢查询SQL时，dba人员分析慢查sql后发现有更好的索引可以使用，需把当前执行计划选择性较差的索引删除，如果先删除旧索引，会造成本来已经很差的查询变得更烂，从而，数据库中的慢查会更多，服务器负载会更高，有一件破烂衣服总比光屁股暖和。我们可以先把合适的索引加上，确定查询sql走了该索引后，再删除低效的索引。

2，对于研发来讲，在提sql执行的时候，强烈建议先加后删索引，同样，在索引删除后，新索引创建前，业务高峰期可能就已经在数据库中产生了慢查询，对系统的稳定产生影响。另外，对于唯一索引的表，删除唯一索引后，可能会在短时间内产生大量重复业务数据，此刻再添加新的唯一索引会发生报错，造成新索引添加失败。
