从来没有考虑过,索引名字对管理有影响。
开发提交过来的DDL脚本是:
alter table … drop index01 ….. drop index02
….. add
index01 ….. add index02…..的格式。
目的是对一个单列索引变更为组合索引。但是用工具导出后SQL就变成了这样。
由于是大表,我个人建议是拆开执行,
先执行alter table … drop index01……
再执行另外一个alter table drop index02
…
再执行alter table … add
index01 ……
最后再执行一个alter table… add index02 ……
这样的一个好处是分散一下步骤。万一遇到问题不至于全部回退。
自我感觉这个很合理。不过问题来了,开发说删除索引到增加索引这个期间,可能删除索引很快,但是增加索引较慢。而这个期间涉及到这个表的SELECT会变成全表查询。该表已经几千万数据了。写的操作很少,但是读的操作很多。
其实这个也好解决,可以采用先增加索引index03和04,增加索引后再删除旧索引index01和index02。但是问题又来了。
开发人员说这样生产系统的index03和04和UAT环境中的index01和02的名字不一样。
大家都知道名字不一样不影响索引使用。但是开发人员和运维人员对于规范化管理来说是不行的。日后要核对两者一致性。
数据库既然支持表名重命名、列名重命名,那么索引应该也支持。但是这个操作极其少见。
按照数据库DDL的语法尝试进行修改。
完全可行。开发和运维的管理问题解决了。
这个命令是自己不知道的,而是完全按照语法推断出来的。