【发布时间】:2015-12-18 02:33:11
【问题描述】:
每周我需要将 50K~200K 行记录从原始 CSV 文件加载到我的系统中。
目前我的解决方案是将 CVS 加载到临时表(在处理后将其清空),然后运行我的 存储过程 以将数据操作到我系统中的不同相关表。如果记录已存在,将运行 update 查询(CSV 中 80% 的记录已在我的系统表中),如果不存在,将 插入 记录。
我现在面临的问题是表格增长到几百万条记录,大约。每张桌子5~6百万。 “Select Exist”似乎也很慢,之后我批量更改为左连接表也很慢。 即使我刚刚加载了 5K 条记录,也可能需要几个小时才能完成存储过程过程。
在比较表以决定插入/更新记录时,有什么好的和更快的解决方案来处理大量记录?
谢谢!!
杰克
【问题讨论】:
-
从表索引开始。然后,您可以查看几篇有关管理和扩展大型数据库的在线文章。
-
我之前做过索引。目前,当表增长到数百万行时,它开始表现不佳。
-
看看 MySQL 的 "REPLACE INTO" 语句,它可能是您正在寻找的解决方案:dev.mysql.com/doc/refman/5.0/en/replace.html
-
是的,Miki,我也在考虑使用 REPLACE INTO ;),只是不确定性能是否与使用 left join 一样好。