Я реструктурировал одну из моих таблиц данных (DeviceLogs) с разбивкой по месяцам, используя поле даты (LogDate
).Ниже приведена минимальная версия моей таблицы.
UUID | LogDate | DeviceId | Counter
------|----------------------|-----------|---------
xxxx | 2018-08-21 15:00:00 | 23 | 45
xxxx | 2018-08-21 15:00:00 | 24 | 23
xxxx | 2018-08-21 15:00:00 | 25 | 120
xxxx | 2018-08-21 16:00:00 | 23 | 55
xxxx | 2018-08-21 16:00:00 | 24 | 30
Составной первичный ключ (UUID, LogDate)
Я создал раздел следующим образом ..
ALTER TABLE DeviceLogs PARTITION BY RANGE (TO_DAYS(LogDate)) (
PARTITION plt201807 VALUES LESS THAN (TO_DAYS('2018-07-01')),
PARTITION plt201808 VALUES LESS THAN (TO_DAYS('2018-08-01')),
PARTITION plt201809 VALUES LESS THAN (TO_DAYS('2018-09-01')),
PARTITION plt201810 VALUES LESS THAN (TO_DAYS('2018-10-01'))
)
У меня есть несколько наборов запросов к приведенной выше таблице, из которых я буду генерировать отчеты и графики своей базы данных.Я могу привести несколько примеров шаблонов запросов, которые я использую.
// Hourly (Last 25 hours)
SELECT DeviceId, sum(Counter) FROM DeviceLogs
WHERE LogDate BETWEEN '2018-08-21 15:00:00' AND '2018-08-20 14:00:00'
GROUP BY HOUR(LogDate)
.
// Daily (Last 30 days)
SELECT DeviceId, sum(Counter) FROM DeviceLogs
WHERE LogDate BETWEEN '2018-08-21 15:00:00' AND '2018-07-21 15:00:00'
GROUP BY DAY(LogDate)
.
// Monthly (Last 12 months)
SELECT DeviceId, sum(Counter) FROM DeviceLogs
WHERE LogDate BETWEEN '2018-08-21 15:00:00' AND '2017-08-21 15:00:00'
GROUP BY MONTH(LogDate)
Мой вопрос, во-первых, получу ли якакая реальная выгода от создания ежемесячного раздела для вышеупомянутых запросов?во-вторых, нужно ли включать имя раздела в вышеупомянутые запросы, чтобы получить реальную выгоду от разбиения?