1.问题
为了提升数据库的查询速度需要在数据表中的字段上添加索引,但是表中的数据量很大的时候,直接添加索引会导致数据库崩溃或者锁表时间太长而影响对数据库的操作
2.解决方案
- 创建一张临时的新表,复制旧表的结构及其索引
create table new_table like old_table;
- 新表中添加新增的字段,增加索引
ALTER TABLE `table_name`
ADD COLUMN `num` int(10) NOT NULL DEFAULT 0 AFTER `addtime`;
ALTER TABLE `table_name` ADD INDEX `num` (`num`);
- 复制旧表的数据到新表
insert into new_table(id,name,content,addtime) select id,name,content,addtime from old_table;
注意:执行这步操作的时候因为数据量比较大会非常耗时,之后进来的数据也需要导入到这张新表中,所以尽量选择低峰时间进行操作,以减少数据差距
5. 修改旧表的名字,然后修改新表的名字为旧表的名字
需要做好数据的备份,使用一段时间后没问题了再进行旧表的删除