繁体   English   中英

检查是否存在要在MYSQL中插入或更新的记录

[英]Check if exists records to insert or update In MYSQL

每周我需要将CSV原始文件中的5万到20万行记录加载到系统中。

目前,我的解决方案是将CVS加载到临时表(在处理后将其清空),然后运行存储过程以将数据处理到系统中不同的相关表上。 如果已经存在的记录将运行更新查询(我的系统表中已经存在CSV中的80%记录),如果不存在,则将插入记录。

我现在面临的问题是表格正在增长到几百万条记录,大约。 每张桌子5〜600万。 Select Exist ”似乎也很慢,在那之后我分批更改为左联接表也很慢。 即使我刚刚加载了5K记录,也可能需要花费几个小时才能完成存储过程。

在比较表以确定插入/更新记录时,是否有任何好的,更快的解决方案来处理大记录?

谢谢!!

插口

请执行以下过程,这将减少您的时间

如果受影响的行数= 0,请首先尝试更新记录并检查受影响的行数,然后插入记录。

但是,请确保每次需要修改Modify_Date时(如果表中不存在Modifyed_Date),那么您需要添加,因为如果新记录和旧记录中的所有数据都相同,那么它将创建新查询,只是因为表记录中没有修改因此它将返回0。

MySQL的响应缓慢几乎始终是索引编制错误或使用不正确的问题。

如果使用正确的键或/和索引,则INSERT ... ON DUPLICATE KEY UPDATE ...应该起作用。

尝试仅在现有索引/键上工作。 使用EXPLAIN SELECT检查您的语句。

恕我直言,基于tmp表的预处理是可以的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM