哪个更有效,DELETE和INSERT或INSERT和UPDATE

时间:2013-03-26 23:01:20

标签: mysql sql-update sql-insert sql-delete

我有一个eav表结构,不需要填充special_from,special_to和special_display

我正在制作一个sql脚本来填充产品的这些eav属性,我的脚本是如何工作的,这三个值的数据被处理并存储在临时表中,当我拥有所需的所有数据时,我需要更新eav属性

产品可能具有这些值,因此我有2个附件

1)DELETE我在临时表中列出的产品的eav值然后INSERT他们 2)INSERT尚未分配的值UPDATE具有

的值

我正在处理多达10,000种产品,所以我想知道哪种产品效率更高,因为我希望最大限度地缩短查询所需的时间

1 个答案:

答案 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个查询,您可以一次更新所有受影响的产品,从而最大限度地减少对数据库的影响(重建索引)。 另一种方法是在事务中的循环内执行单个查询,以避免每个条目的重新索引。