MySQL数据库大量记录更新

发布于 2024-11-18 15:22:20 字数 674 浏览 2 评论 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 中的项目。此方法的问题是 - 此过程非常慢...对于大约 20,000 个项目,需要大约 25-30 分钟。 (我的应用程序在 RoR 上运行)

我想问您 - 您能帮我提供更好、尤其更快的方法来将新记录更新到表 (table_a) 中吗? 我将非常感激...提前谢谢你, M。

I am thinking about most effectively a way, how to download and updating items to/in my database (MySQL). I am working with tens of thousands to hundreds items.

I have a table (table_a), that contains items. Every night I am downloading new data and these data are stored in table_b. So - it's midnight, I'll download data to table_b and after download all of data I will start to comparing data between table_b and table_a.
If item in table_b exist in table_a, so I will edit 3-4 number value in table_a by table_b. If this item isn't in table_a, so this item I will save to table_a.

This way I am updating items in my table table_a one time of a day. The problem of this method - this procedure is very slow... for ca 20.000 items it takes ca 25-30 minutes. (my app is running on RoR)

I would like to ask you - can you help me, please, better and especially faster way to update new records into the table (table_a)?
I will be very grateful for it... thank you in advance,
M.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

止于盛夏 2024-11-25 15:22:20

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

大致如下:

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

If all the required data is available in the database, the logic is not overwhelmingly complex or subject to frequent changes, and performance is an issue, migrating the logic into a single SQL statement is one of your most obvious options.

Something along the lines of this:

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

染火枫林 2024-11-25 15:22:20

两个建议:

  1. 索引:这应该使查找速度更快。
  2. 哈希:如果要比较长字符串,最好先创建哈希,然后再将它们存储在数据库中并比较它们的哈希。

Two suggestions:

  1. Indexes: These should make lookups faster.
  2. Hashes: If you are comparing long strings, it's better to create hashes before storing them in the database and comparing their hashes.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文