mysql добавление цен
Есть таблица история цен. Цены обновляются на сайте каждый час. Примерно 40тыс, цен. Чтобы вести историю цен, все эти цены добавляются без проверки в базу. База соответственно разрослась до 7млн, записей.
Не хочется плодить эти записи, но и добавлять цены(только те, что изменились), тоже ресурсозатратно. Возможно, кто-то подскажет более удобный способ хранения истории изменения цен.
Не хочется плодить эти записи, но и добавлять цены(только те, что изменились), тоже ресурсозатратно. Возможно, кто-то подскажет более удобный способ хранения истории изменения цен.
Поблагодарить автора
Отправить деньги
Комментарии: 7
Наверное, только вариант с хранением изменившихся цен.
В принципе, можно записывать в таблицу все цены, а затем подчищать ненужные записи отдельным скриптом, который по cron будет запускаться.
Подчищает пусть каким-нибудь хитрым sql запросом.., чтобы не объекты xpdo (мы же про modx говорим?))) дергать, а попроще как-нибудь. Типа выбрать 2 последние записи с одним id товара, если цена одинаковая — то последнюю из этих записей удалить, как не нужную, а если цены разные — предпоследнюю пометить как «проверенную» и больше ее не проверять.
Или например разнести все это по 2м таблицам: одна временная, где все 40 тыс записей, а во вторую уже попадают только действительно изменившиеся цены.
В принципе, можно записывать в таблицу все цены, а затем подчищать ненужные записи отдельным скриптом, который по cron будет запускаться.
Подчищает пусть каким-нибудь хитрым sql запросом.., чтобы не объекты xpdo (мы же про modx говорим?))) дергать, а попроще как-нибудь. Типа выбрать 2 последние записи с одним id товара, если цена одинаковая — то последнюю из этих записей удалить, как не нужную, а если цены разные — предпоследнюю пометить как «проверенную» и больше ее не проверять.
Или например разнести все это по 2м таблицам: одна временная, где все 40 тыс записей, а во вторую уже попадают только действительно изменившиеся цены.
Спасибо, наверно буду подчищать. С двумя таблица не очень понял идею.
Ну сначала быстро копируем все старые цены во временную таблицу, без разбора.
А потом уже неспешно «перебираем» эту таблицу, сравниваем со второй таблицей, где хранятся только те цены, что действительно изменились. Ну и после сравнения принимаем решение о переносе цены из временной таблицы в постоянную
А потом уже неспешно «перебираем» эту таблицу, сравниваем со второй таблицей, где хранятся только те цены, что действительно изменились. Ну и после сравнения принимаем решение о переносе цены из временной таблицы в постоянную
Я понял, спасибо за совет.
Можно ети цены сохранять в талице с 2 полями 'product_id' i 'prices'
где prices — сохраняєтся в виде JSON
где prices — сохраняєтся в виде JSON
[209.99, 199.99, 179.99]
или[
{'price': 209.99, 'date': "dd.mm.YY HH:ii:ss"},
{'price': 199.99, 'date': "dd.mm.YY HH:ii:ss"},
{'price': 179.99, 'date': "dd.mm.YY HH:ii:ss"}
]
Не знаю на сколько ето правильно
Я думал про этот способ. Просто не очень понятно, как потом выводить данные за определенную дату.
{
"dd.mm.YY.HH": 209.99,
"dd.mm.YY.HH": 199.99,
"dd.mm.YY.HH": 179.99,
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.