powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql PARTITION datetime
6 сообщений из 6, страница 1 из 1
mysql PARTITION datetime
    #39615531
chiffacff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Необходимо разбить таблицу на части, по полю типу datetime. разбивать по количеству дней от поля `add_time` DATETIME.

То есть в Части 1 хранить все за последний день (24 часа)
во второй части от 1 дня до 7
третия часть все что выше 7 дней.

стараюсь сделать так:

Код: sql
1.
2.
3.
4.
alter table `mytable` partition by range (DAY(add_time))
(PARTITION p1 VALUES LESS THAN (1) ENGINE = InnoDB, 
 PARTITION p2 VALUES LESS THAN (7) ENGINE = InnoDB, 
 PARTITION p3 VALUES LESS THAN (MAXVALUE) ENGINE = InnoDB);



Разбивается нормально, но при запросе:

Код: sql
1.
explain partitions select * from `mytable` a  where a.add_time<'2018-03-13';



получаю partition: p1,p2,p3 хотя должно быть "p2" (или p2,p3).

подскажите, как правильно переделать alter?
Заранее всем спасибо!
...
Рейтинг: 0 / 0
mysql PARTITION datetime
    #39615609
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiffacffТо есть в Части 1 хранить все за последний день (24 часа)
во второй части от 1 дня до 7
третия часть все что выше 7 дней.
Так работать не будет всё равно.
Партицирование должно быть иммутабельно и потому не может зависеть от текущей даты, странно что парсер mysql позволяет такое написать. Хотя не первое что он написать позволяет, а работает всё равно по-другому.
...
Рейтинг: 0 / 0
mysql PARTITION datetime
    #39615615
chiffacff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так зависимость не от текущей даты, а от даты записи в поле `add_time`
...
Рейтинг: 0 / 0
mysql PARTITION datetime
    #39615629
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chiffacff,

и это не то поведение, что я процитировал как описанное вами желаемое из начального сообщения.

В SQL вы описали логику партицирования:
- данные за первое число месяца отдельно (я сегодня уже заработался и не соображу, попадёт ли сюда вообще что-нибудь, вроде бы нет т.к. условие < 1, что невозможно для дня месяца)
- данные за первые 7 дней месяца
- остальные
...
Рейтинг: 0 / 0
mysql PARTITION datetime
    #39615679
chiffacff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как нужно?...
...
Рейтинг: 0 / 0
mysql PARTITION datetime
    #39615685
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашёл нужную страницу мануала: https://dev.mysql.com/doc/refman/5.7/en/partitioning-limitations-functions.html
In MySQL 5.7, partition pruning is supported for the TO_DAYS(), TO_SECONDS(), YEAR(), and UNIX_TIMESTAMP() functions.

Партицировать по day в принципе можно, но partition pruning не умеет даже по точному условию DAY(add_time) = const.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql PARTITION datetime
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]