Грамотное обновление данные в БД

Возникла потребность в обновлении большого прайса (~70к записей) на сайте. Данные получаю по API. Подскажите, пожалуйста, грамотный и оптимальный способ обновления. Какие вижу варианты я:

  1. Пройтись в цикле по каждому товару -> обратиться к БД и обновить цену (даже если не изменилась).
  2. Получить все данные из таблицы, сравнить циклом в цикле, удалить предыдущие данные и записать новые (что-то бредово звучит этот вариант).

Ответы (1 шт):

Автор решения: Mike
  1. Получить все данные из БД. Поместить их в массив с ключом по ID записи или другому признаку, по которому идет сопоставление с данными, получаемыми по API. (далее $db_data)
  2. В цикле пройтись по данным API, получая по ключу из массива $db_data состояние в БД. Если строки с данным ключом не найдено - добавляем новую запись в БД. Если запись есть, сравниванием поля с данными, если данные отличаются, выдаем update. Вне зависимости от того менялись данные или нет, удаляем из массива $db_data запись с текущим ключом.
  3. По завершении цикла по данным API, все что осталось в $db_data, это то, чего не нашлось в данных API. Удаляем эти записи из БД

P.S. При получении данных API не забыть сделать проверки, что данные действительно получены. Что бы пустой массив с данными не привел к удалению всех данных из БД на шаге 3.

→ Ссылка