更新MySQL数据库中的大量记录

时间:2011-07-03 13:51:45

标签: mysql ruby-on-rails-3 cron items

我正在考虑最有效的方法,如何下载和更新我的数据库(MySQL)中的项目。我正在处理成千上万件物品。

我有一个表( table_a ),其中包含项目。每天晚上我都在下载新数据,这些数据存储在 table_b 中。所以 - 午夜时分,我会将数据下载到 table_b ,下载完所有数据后,我将开始比较 table_b table_a 之间的数据。 如果 table_b 中的项目存在于 table_a 中,那么我将通过 table_b table_a 中编辑3-4数字值。如果此项目不在 table_a 中,那么此项目我将保存为 table_a

这样我每天一次更新表格 table_a 中的项目。这个方法的问题 - 这个程序非常慢......对于大约20.000个项目,它需要大约25-30分钟。 (我的应用程序在RoR上运行)

我想问你 - 请帮助我,更好,更快捷地将新记录更新到表格中( table_a )? 我将非常感激... ...提前谢谢你, 微米。

2 个答案:

答案 0 :(得分:2)

如果数据库中提供了所有必需的数据,那么逻辑并不是非常复杂或经常发生变化,性能是一个问题,将逻辑迁移到单个SQL语句是您最明显的选择之一。

有些事情如下:

INSERT INTO table_a SELECT * FROM table_b ON DUPLICATE KEY UPDATE value1 = table_b.value1,value2 = table_b.value2,....;

答案 1 :(得分:0)

两个建议:

  1. 索引:这些应该使查找更快。
  2. 哈希:如果要比较长字符串,最好在将哈希值存储到数据库中并比较它们的哈希值之前创建哈希值。