我有一个要插入/更新到的MySQL 8 RDS(innodb)实例。
目标表包含约120m行,我正尝试从csv向表中插入2.5m。源表中的某些数据可能已经存在于目标表中,并且受到主键的约束,在这种情况下将进行更新。
进行了一些研究,我发现最快的方法似乎是从源表到临时表,然后是
insert into target_table
select col1, col2 from source table a
on duplicate key update col1 = a.col1, col2 = a.col2
但是这似乎要花费几个小时。
是否有最佳实践来优化此类插入物?
将插入片段分离为单独的插入更新会更快吗?我可以禁用目标表中的索引吗(我知道这对于myisam是可行的)?
谢谢