mysql 为大表新增字段或索引

1 问题

mysql 为大表增加或增加索引等操作时,直接操作原表可能会因为执行超时而导致失败。解决办法如下。

2 解决办法

(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

3 备注

(1)MySQL查询一个表中的所有字段的方法

select CONCAT(COLUMN_NAME ,',') from information_schema.COLUMNS where table_name = '表名' and table_schema = '库名';

(2)可以在idea中的database上执行sql,上面可以设置执行超时时间。

4 参考文献

(1)https://www.cnblogs.com/zhangchenglzhao/p/11731817.html

(2)mysql大表创建索引问题_mysql 大表创建索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值