如何将数据从 table 移动到另一个 Mysql big table

How to move data from table to an other in Mysql big table

我有一个很大的 table 大约 200,000,000 行 MYISAM,它有一个组合主键 但是我没有索引。

我想创建一个索引,但问题是 table 服务器在我执行添加索引请求时损坏了:

ALTER TABLE `db`.`table` 
ADD INDEX `index_0001` (`col1` ASC);

所以我将创建一个新的 table 并配置所需的索引并将数据移动到新的 table 并重命名它。

我试过这个操作:

INSERT INTO `db`.`table` (field1,field2,..) select field1,field2,....from eventdata limit 100000 offset 0 ;
INSERT INTO `db`.`table` (field1,field2,..) select field1,field2,....from eventdata limit 100000 offset 100000 ;
INSERT INTO `db`.`table` (field1,field2,..) select field1,field2,....from eventdata limit 100000 offset 200000 ;
.......... etc 

但是当偏移量超过 100,000,000 时,查询行响应变得更慢。

还有其他解决方案吗?

tahnks

使用limit 100000 offset 100000 ;表示MySQL搜索了100000条记录,从100001开始得到记录;

搜索100000条记录是TABLEFULL SCAN,所以很慢;

使用Primary key搜索是更好的方法,例如... where pk >=100000 and pk <= 199999

如果Primary key不能分成Number,用Join

select field1,field2... from tbname tb1,(select pk from tbname limit 100000 offset 100000)tb2 where tb1.pk = tb2.pk

使用Primary key搜索记录优于TABLE FULL SCAN;