我在magento“catalog_product_entity_decimal”表的更新查询中遇到问题。我需要每隔一小时动态更新产品价格,商店现在有~50k产品。所以我没有遵循产品价格保存到批量更新的magento方式,而是在“catalog_product_entity_decimal”表中跟踪直接产品价格更新,该表格给出了结果。
我的查询是这样的 $ query =“UPDATE catalog_product_entity_decimal val SET val.value ='$ final_rounded_price'WHERE val.attribute_id = 75 AND val.entity_id = $ product_id”;
更新到47701个产品需要1307.1874998760223秒。这是近20分钟 - 当我们在实时网站更新时这太慢了。
它确实在商店中正确反映但需要很长时间才能更新哪个是大问题。也没有此查询更新,此过程所花费的时间仅为mili秒。所以这个表是花费时间的问题,然后我尝试更新一些虚拟表更新,它具有几乎相同的记录,用于我自己的目的,需要8.5674998760223秒才能更新到47701产品。
该查询是这样的
$ query =“UPDATE product_attributes val SET val.price ='$ final_rounded_price'WHERE val.attr_id = $ attr_id AND val.product_id = $ product_id”;
我试过不同的服务器,结果大致相同。所以我看到“catalog_product_entity_decimal”这个表有很多引用,这必须是花费很长时间的原因。
我不是mysql方面的专家,我无法使用此表减少mysql更新时间。请建议我如何更快地在表“catalog_product_entity_decimal”上运行更新查询以批量更新价格。
附上表格“catalog_product_entity_decimal”的屏幕截图供参考。
开发服务器配置: Cent os 6 with php 5.3, 8 GB RAM, Magento环境 - 1.7.02 - 运行默认存储而无需更改代码/ db。