У меня есть система внутренней инвентаризации с нижеуказанными 3 таблицами какОбновление/Вставка Большие записи таблицы на основе другой таблицы ReferenceID.
a. Акции - Ежедневно обновляется из файла CSV.
---------------------------------
| id | MODELNO | Discount | MRP |
---------------------------------
| 1 | MODEL_1 | 40% | 900 |
| 2 | MODEL_A | 20% | 600 |
---------------------------------
Каждый день эта таблица данных усеченные и новые акции импортированы из файла CSV торговца. (Около 6 миллионов записей)
б. Полотна Master - база мастера одежды
----------------------------------------
| ref_id | MODELNO | Name | MRP |
----------------------------------------
| 80 | MODEL_1 |Some Dress | 900 |
| 81 | MODEL_A |Another Dress| 600 |
----------------------------------------
MODELNO
является уникальным и ref_id
первичным ключом. Эта таблица является частью внутреннего приложения инвентаризации (имеет около 4,5 млн. Записей)
c. Inventory стол - это часть внутренних приложений
-------------------------------------------------
| id | ref_id | Name | MRP | status |
-------------------------------------------------
| 1 | 80 |Some Dress | 900 | ACTIVE |
| 2 | 81 |Another Dress| 600 | INACTIVE |
--------------------------------------------------
В этой таблице хранится ресурсы, доступные для продукта, основанных на акциях и если скидка, если выше 40% продукт ACTIVE
еще по умолчанию INACTIVE
.
Необходимая функциональность заключается в том, что каждый день мне нужно запустить скрипт, который будет циклически проходить через записи таблицы запасов, а для MODELNO
обновить запас в таблице Inventory и если запись в таблице Inventory не существует, тогда она должна быть добавлен.
То, что я пробовал до сих пор, это PHP-скрипт, который будет. a. Во-первых, установите статус в таблице инвентаризации для всех записей в значение НЕАКТИВНО. b. И для каждой записи в таблице запасов проверьте, существует ли MODELNO в таблице «Ткань». b. Если записи существуют, то получите ref_id и проверьте, соответствует ли ref_id в таблице инвентаризации и обновляет/вставляет запись.
Проблема в том, что для выполнения сценария требуется более 8+ часов.
Можете ли вы предложить эффективный способ, который можно использовать для реализации вышеуказанных функций.
Примечание: Все вставки и обновленные таблицы инвентаризации выполняются с использованием функции вставки/обновления пакета CodeIgniter. Я установил все статус НЕАКТИВНО, так как может быть несколько продуктов, которых нет в БД запаса.
Подсказка: Не хранить «%». – Strawberry
Сделаю это, кстати, я использовал Mysql Load Inline, чтобы выгрузить файл CSV в DB. Также добавили индекс для MODELNO, а поле ref_id – epynic