问题
mysql 为大表增加或增加索引等操作时,直接操作原表可能会因为执行超时而导致失败。
解决办法如下。
解决办法
(1)建新表-复制表a 的数据结构,不复制数据
create table b like a;
(2)加字段或索引-表b加上新字段或索引
(3)导数据到新表-把原有数据导入新表
- 未新增字段时
insert into b select * from a [where 条件]
- 添加了新字段时。
- 假设添加字段名为data_code(默认值为空),且字段位于id之后
insert into b select id, '' data_code, 其他旧字段 from a [where 条件]
数据量达到几千万时,可以添加where 条件,分批将数据导入到新表。防止数据导入超时。
(4)改表名-修改表a 的名称为a_old,修改b表的表名为a
备注
- (1)mysql查询一个表中的所有字段的方法
select concat(column_name ,',') from information_schema.columns where table_name = '表名' and table_schema = '库名';
- (2)可以在idea中的database上执行sql,上面可以设置执行超时时间。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论