2011-11-22 40 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

相關問題