我有一个MySQL表,其中包含大约200万种产品的大量产品定价信息。每天我都要为价格信息发生变化的任何产品更新此信息[巨大的痛苦]。
我想知道处理这些更改的最佳方法是运行compare and update
之类的任何已更改的产品?
喜欢你能提供的任何建议
答案 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脚本完成。