MYSQL索引列字符串无法修改长度以及前缀索引的使用

因为业务需要系统需要修改几个varchar字段的长度到500,

问题是因为这些字段是表全局索引列,

长度无法扩展(当前180长度,没有测试具体的上限),

所以在网上查询解决方法后最终确定先把索引更改为前缀索引后再修改字段的长度,

而且前缀索引也比较适合当前的业务流程,以及存储的数据类型。

具体的前缀索引介绍可以自行搜索学习。

解决流程:

1:因为表的数据量是千万级的恐怖数据量,所以首先在不影响业务的时间点关停了所有的服务,然后重启了一次MYSQL的服务,确保数据库不被事务给卡住。

  (第一次没有重启数据库服务,导致在操作的第一步删除原有的索引这一步就被事务给卡住了,导致删除索引命令一直处于执行状态)

2:执行删除索引语句,删除原有索引(执行速度挺快)。

ALTER TABLE 表名 DROP INDEX 索引名;

3:添加前缀索引,因为估算了一下数据的结构,最终选择前缀索引的长度为12(执行速度比较慢,差不多一个列执行了好几分钟).

ALTER TABLE 表名 ADD INDEX 索引名(列名(12));

4:修改字段的长度(长度改为500)(执行速度特别慢,差不多一个列将近半个小时):

ALTER TABLE 表名 MODIFY COLUMN 列名 varchar(500);

 

posted @ 2021-07-22 22:00  凉年技术  阅读(460)  评论(0)    收藏  举报