У меня есть огромный MySQL таблицы, и она растет примерно на 90 строк в секунду, через каждые 4 часа в 1,3 миллиона строк получает сбрасывали там с отметкой времениMySQL Удалять старые строки на один день
user(varchar) | created_at(timestamp)
----------------------------
user 1 | 2016-01-27 08:00:00
user 2 | 2016-01-27 08:00:00
user 3 | 2016-01-27 08:00:00
...
user 1 | 2016-01-27 12:00:00
user 2 | 2016-01-27 12:00:00
и т.д .. Каков наилучший подход к обрезке данных старше месяца, чтобы иметь только одну строку в день?
Там всегда строки в 00:00, так что я думал что-то вдоль линий
created_at >= date + 00:00 and created_at < date + 19:59
или
select user, max(created_at) from table where created_at = date group by username
, что вы имеете в виду только одна строка в день? – essramos
Итак, каждые 4 часа я получаю данные для всех пользователей, но мне не нужно, чтобы это было нормально через месяц, всего один раз в день, поэтому идеально просто сохранить первый импорт в день. Минуты в секундах всегда равны 0, так как это время начала импорта, его делается на PHP как «дата (« Ymd H: 00: 00 »)' – Adam
, вы можете фактически использовать [события] (https: // dev .mysql.com/doc/refman/5.7/ru/create-event.html) на mysql, вы можете планировать эти события для удаления определенной таблицы и запускать это событие каждый день в определенное время. – essramos