2013-03-26 4 views
2

У меня есть структура EAV стола, special_from, special_to и special_display не должны быть заполненыкоторый больше ЭФФЕКТИВНЫЙ, DELETE и INSERT или INSERT и UPDATE

я делаю сценарий SQL, который заполнит эти атрибуты EAV для продуктов, как работает мой скрипт, так это то, что данные для этих трех значений обрабатываются и сохраняются в таблице temp, когда у меня есть все данные, когда мне нужно обновлять атрибуты eav.

возможно, чтобы продукты имели эти значения, поэтому у меня есть 2 приложения

1) DELETE значения eav для продуктов ih Аве перечислены в моей таблице темп затем INSERT их 2) INSERT значения, которые не были назначены, то UPDATE те, которые имеют

я работаю до 10000 продуктов, поэтому я задаюсь вопросом, что является более эффективным, так как я хочу, чтобы свести к минимуму количество времени, запрос принимает

+2

Похоже, что вы действительно хотите [UPSERT] (http://stackoverflow.com/q/6107752/102937). –

ответ

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) 

И похоже на специальном поле дисплея (в зависимости от того типа данных, которые могут быть.

Я предположил, что здесь пурпурно, поскольку это единственное, что я когда-либо видел, используя EAV.

С помощью этих 2 запросов вы сможете сразу обновлять все затронутые продукты, тем самым минимизируя влияние на базу данных (переиндексирование). Другим способом было бы сделать одиночные запросы в цикле внутри транзакции, чтобы избежать переиндекса на запись.

+0

yep, это пурпурно, нет ничего другого, что я должен делать такие странные вещи, как это для –

Смежные вопросы