Ниже моя структура таблицы, 150K записейСоздание раздела на существующую таблицу тузд
CREATE TABLE `employees` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`city` varchar(255) DEFAULT NULL,
`emailid` varchar(255) DEFAULT NULL,
`join_date` date NOT NULL DEFAULT '0000-00-00',
PRIMARY KEY (`id`,`join_date`)
) ENGINE=InnoDB
Я использую версию MySQL: 5.5.41
отчет данных:
+------------+-----------+
| join_date | count |
+------------+-----------+
| 2015-05-01 | 100 |
| 2015-05-02 | 100 |
| 2015-05-03 | 100 |
| 2015-05-04 | 100 |
| 2015-05-05 | 100 |
| 2015-05-06 | 100 |
| 2015-05-07 | 67900 |
| 2015-05-08 | 30622 |
| 2015-05-09 | 10455 |
| 2015-05-10 | 40393 |
+------------+-----------+
Когда я пытаюсь для выполнения ниже команды
Alter Table employees PARTITION by RANGE (TO_DAYS(join_date))
(PARTITION p1 values less than (TO_DAYS('2015-05-07')));
Я получаю следующую ошибку: В таблице нет раздела для значения 736090. Даже если у меня 600 записей меньше значения 2015-05-07
Я делаю что-то неправильно.
40K строки достаточно малы для раздела. Сколько дней вы будете держать в таблице? Неэффективно хранить больше, чем, скажем, 50 разделов. См. [Мой блог] (http://mysql.rjweb.org/doc.php/partitionmaint) для получения дополнительных рекомендаций, а также эффективный код для добавления новых разделов и удаления самого старого. –