mysql добавление цен

Есть таблица история цен. Цены обновляются на сайте каждый час. Примерно 40тыс, цен. Чтобы вести историю цен, все эти цены добавляются без проверки в базу. База соответственно разрослась до 7млн, записей.

Не хочется плодить эти записи, но и добавлять цены(только те, что изменились), тоже ресурсозатратно. Возможно, кто-то подскажет более удобный способ хранения истории изменения цен.
Роман
22 июля 2021, 09:58
modx.pro
91
0
Поблагодарить автора Отправить деньги

Комментарии: 7

Наумов Алексей
22 июля 2021, 10:39
0
Наверное, только вариант с хранением изменившихся цен.

В принципе, можно записывать в таблицу все цены, а затем подчищать ненужные записи отдельным скриптом, который по cron будет запускаться.

Подчищает пусть каким-нибудь хитрым sql запросом.., чтобы не объекты xpdo (мы же про modx говорим?))) дергать, а попроще как-нибудь. Типа выбрать 2 последние записи с одним id товара, если цена одинаковая — то последнюю из этих записей удалить, как не нужную, а если цены разные — предпоследнюю пометить как «проверенную» и больше ее не проверять.

Или например разнести все это по 2м таблицам: одна временная, где все 40 тыс записей, а во вторую уже попадают только действительно изменившиеся цены.
    Роман
    22 июля 2021, 12:16
    0
    Спасибо, наверно буду подчищать. С двумя таблица не очень понял идею.
      Наумов Алексей
      22 июля 2021, 14:00
      +1
      Ну сначала быстро копируем все старые цены во временную таблицу, без разбора.
      А потом уже неспешно «перебираем» эту таблицу, сравниваем со второй таблицей, где хранятся только те цены, что действительно изменились. Ну и после сравнения принимаем решение о переносе цены из временной таблицы в постоянную
        Роман
        22 июля 2021, 16:06
        0
        Я понял, спасибо за совет.
    Тодор
    22 июля 2021, 16:11
    0
    Можно ети цены сохранять в талице с 2 полями 'product_id' i 'prices'
    где 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"}
    ]
    Не знаю на сколько ето правильно
      Роман
      22 июля 2021, 16:24
      0
      Я думал про этот способ. Просто не очень понятно, как потом выводить данные за определенную дату.
        Тодор
        22 июля 2021, 16:50
        0
        {
        "dd.mm.YY.HH": 209.99,
        "dd.mm.YY.HH": 199.99,
        "dd.mm.YY.HH": 179.99,
        }
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7