MySQL数据库中大量记录的更新
我正在考虑一种最有效的方法,如何将项目下载并更新到我的数据库(MySQL)。我正在处理成千上万到数百个项目 我有一个表(表a),其中包含项目。每天晚上我都下载新数据,这些数据存储在表b中。所以-现在是午夜,我将下载数据到表b,下载完所有数据后,我将开始比较表b和表a之间的数据。 如果表b中的项目存在于表a中,那么我将通过表b编辑表a中的3-4个数值。如果此项目不在表a中,则此项目将保存到表a 这样,我每天更新一次表a中的项目。这个方法的问题-这个过程非常慢。。。对于约20.000件物品,大约需要25-30分钟。(我的应用程序正在RoR上运行) 我想问你-你能帮我更好更快速地将新记录更新到表中吗(table_a)? 我会非常感激的。。。提前谢谢大家,, M.两个建议:MySQL数据库中大量记录的更新,mysql,ruby-on-rails-3,cron,items,Mysql,Ruby On Rails 3,Cron,Items,我正在考虑一种最有效的方法,如何将项目下载并更新到我的数据库(MySQL)。我正在处理成千上万到数百个项目 我有一个表(表a),其中包含项目。每天晚上我都下载新数据,这些数据存储在表b中。所以-现在是午夜,我将下载数据到表b,下载完所有数据后,我将开始比较表b和表a之间的数据。 如果表b中的项目存在于表a中,那么我将通过表b编辑表a中的3-4个数值。如果此项目不在表a中,则此项目将保存到表a 这样,我每天更新一次表a中的项目。这个方法的问题-这个过程非常慢。。。对于约20.000件物品,大约需要
如果数据库中有所有必需的数据,那么逻辑就不会过于复杂或频繁更改,而且性能也是一个问题,那么将逻辑迁移到单个SQL语句是最明显的选择之一 大致如下:
插入到表a中,从重复键上的表b中选择*更新值1=表b.value1,值2=表b.value2 请你说得更具体些好吗?比较基于整数值和字符串值。基本上,在mysql中,字符串比较非常昂贵。当我为一个项目构建spider并保存整个html正文时,比较结果的成本非常高。此外,索引位指的是表b中表a外键的索引。我现在研究了外键。。。但我不确定,如果这是我需要的(对不起,也许我只是不明白)。因为在我的例子中,表格
表格a
和表格b
是完全相同的-我的第一个想法,为什么我这么做,是减少了表格a
的脱机时间-现在用户可以从表格a
搜索信息,并且在后台运行表格a
中的实施项目(来自表格b
)以及插入新项目。您能否更详细地解释一下,为什么不能直接在表a上进行插入/更新,而不是在表b中缓冲它们?为什么会导致脱机时间?您是从Ruby应用程序进行更新,还是已经将其转换为数据库内更新语句?我正在更新rails应用程序中的项目。具体来说,我首先调用URL/controller/download\u it,然后调用URL/controller/update\u it->,这两个操作在controller中执行。