大型MySQL表每日更新?

时间:2012-03-27 17:05:05

标签: mysql compare

我有一个MySQL表,其中包含大约200万种产品的大量产品定价信息。每天我都要为价格信息发生变化的任何产品更新此信息[巨大的痛苦]。

我想知道处理这些更改的最佳方法是运行compare and update之类的任何已更改的产品?

喜欢你能提供的任何建议

2 个答案:

答案 0 :(得分:3)

对于批量更新,您绝对应该使用LOAD DATA INFILE而不是许多较小的更新语句。

首先,将新数据加载到临时表中:

LOAD DATA INFILE 'foo.txt' INTO TABLE bar (productid, info);

然后运行更新:

UPDATE products, bar SET products.info = bar.info WHERE products.productid = bar.productid;

如果您还希望INSERT来自您正在更新的同一文件的新记录,您可以SELECT INTO OUTFILE现有表格中没有匹配ID的所有记录然后使用LOAD DATA INFILE将outfile加载到product表中。

答案 1 :(得分:2)

我维护价格比较引擎有数百万的价格,我选择在源中找到的每一行并分别更新每一行。如果没有行,那么我插入。最好使用InnoDB事务来加快速度。

这一切都由知道如何解析源文件和更新表的PHP脚本完成。