我有一个eav表结构,不需要填充special_from,special_to和special_display
我正在制作一个sql脚本来填充产品的这些eav属性,我的脚本是如何工作的,这三个值的数据被处理并存储在临时表中,当我拥有所需的所有数据时,我需要更新eav属性
产品可能具有这些值,因此我有2个附件
1)DELETE
我在临时表中列出的产品的eav值然后INSERT
他们
2)INSERT
尚未分配的值UPDATE
具有
我正在处理多达10,000种产品,所以我想知道哪种产品效率更高,因为我希望最大限度地缩短查询所需的时间
答案 0 :(得分:1)
INSERT INTO
catalog_product_entity_datetime
(entity_type_id, store_id, entity_id, attribute_id, value)
VALUES
(4, 0, PRODUCT_ID_1, ATTRIBUTE_ID_FOR_SPECIAL_TO, SOME_DATE_VALUE),
(4, 0, PRODUCT_ID_1, ATTRIBUTE_ID_FOR_SPECIAL_FROM, SOME_DATE_VALUE),
(4, 0, PRODUCT_ID_2, ATTRIBUTE_ID_FOR_SPECIAL_TO, SOME_DATE_VALUE),
(4, 0, PRODUCT_ID_2, ATTRIBUTE_ID_FOR_SPECIAL_FROM, SOME_DATE_VALUE),
-- ... and so on
-- ... and so on
-- ... and so on
ON DUPLICATE KEY UPDATE value = VALUES(value)
类似于特殊显示字段(可能是哪种数据类型。
我在这里假设magento,因为这是我用EAV唯一看过的东西。
通过这2个查询,您可以一次更新所有受影响的产品,从而最大限度地减少对数据库的影响(重建索引)。 另一种方法是在事务中的循环内执行单个查询,以避免每个条目的重新索引。