0

我正在考虑一种最有效的方法,即如何将项目下载和更新到/在我的数据库(MySQL)中。我正在处理数万到数百个项目。

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

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

我想问你 - 请你帮我,更好,尤其是更快的方式将新记录更新到表中(table_a)?我将非常感激......提前谢谢你,M。

4

2 回答 2

2

如果数据库中所有需要的数据都可用,逻辑不是非常复杂或经常更改,并且性能是一个问题,那么将逻辑迁移到单个 SQL 语句是您最明显的选择之一。

类似这样的东西:

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

于 2011-07-03T15:01:07.900 回答
0

两个建议:

  1. 索引:这些应该使查找更快。
  2. 哈希:如果要比较长字符串,最好先创建哈希,然后再将它们存储到数据库中并比较它们的哈希。
于 2011-07-03T14:00:19.363 回答