2011-11-22 88 views
2

我有一个大表(〜50M记录),我想将这个表中的记录传递给具有相同结构的不同表(新表具有一个额外的索引)。MySql - 将大量记录从一个表转移到另一个表

我正在使用INSERT IGNORE INTO...来传递记录。

最快的方法是做什么?是通过传递小块(可以说是1M记录)还是更大的块?

有什么办法可以加快这个过程吗?

+1

在插入操作期间关闭目标表上的索引,然后重新启用/重建它们。 –

+0

如果您使用Where,idexes(在源表上)可能会有所帮助。在目标表上,索引可能会减慢进程速度(因为在每次插入英文重新计算索引后)。 –

+0

即时通讯使用源表上的索引,我需要在目标表 – Ran

回答

0

之前执行INSERT,对目标表禁用索引(DISABLE KEYS)(如果你能):

参考,可以发现:Here

此外,如果你不使用transanction /关系也许考虑切换到MyISAM引擎。

+0

即时通讯使用innoDB索引。 – Ran

+0

和添加/删除索引强制一个alter table,这将花费我的案件很多时间 – Ran

相关问题