1

我有一个巨大的索引 MySQL 表(约 300-400 GB),我需要不时附加新条目(新数据需要约 10-20 GB)。带有新数据的原始文件可能包含错误,只能手动修复,并且只有在处理脚本到达它们时才可见。此外,只有在原始数据的完整处理完成后,新数据才应在主数据库中可用。因此,为了不搞砸主表,我决定采用以下工作流程:

  1. 该脚本创建结构与主表相同的临时表并填充它。

  2. 完成并验证后,将临时表插入主表:

    INSERT INTO main_table (all_fields_except_primary_key) SELECT all_fields_except_primary_key FROM new_table;
    

据我了解,由于索引新结果,此过程非常缓慢。

我已经读到插入索引表通常非常慢,一些专业人士建议在插入大量数据然后再次索引之前先删除索引。但是对于整个表的如此庞大的数据索引非常长(比我幼稚的 INSERT INTO .. SELECT .. 长得多),更重要的是,主表几乎无法在其中使用(没有索引 SELECTS 需要很长时间) .

所以我有一个想法,在插入之前索引临时表(因为它非常快),然后合并两个索引。

在 MySQL 中是否有可能?

还有另一个问题:我的任务可能还有另一种解决方法吗?

4

0 回答 0