Доброго времени суток. Встал вопрос о множественном обновлении данных. Изначально алгоритм был написан с использованием конструкции on duplicate key и отлично работал, но был слишком медленным из-за алгоритмического расточительства в коде php (квадратичная сложность, которая давала неимоверно большое количество итераций цикла и приводила к таймауту скрипта при больших объемах данных), сейчас алгоритм переписан и пришлось отказаться от конструкции insert on duplicate key update, потому что по алгоритму меня два массива данных теперь. Один который нужно внести в бд, другой который нужно обновить, следовательно если в секции, которую необходимо обновить делать insert on duplicate key, то мало того, что insert никогда не выполнится, так еще и auto_increment будет расти.
Вопрос в том, чтобы найти подход, который позволил бы заапдейтить, скажем, 10 000 записей в короткие сроки. Решения к которым я пришел, путем гугления:
1. Prepared statements
2. Оставить insert on duplicate key update
3. Использовать конструкцию типа:
UPDATE tbl_country SET price = CASE
WHEN code = 1 THEN 123;
WHEN code = 2 THEN 456;
…
END
WHERE code IN (1,2,…)