2015-05-20 2 views
3

Ниже моя структура таблицы, 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

Я делаю что-то неправильно.

+0

40K строки достаточно малы для раздела. Сколько дней вы будете держать в таблице? Неэффективно хранить больше, чем, скажем, 50 разделов. См. [Мой блог] (http://mysql.rjweb.org/doc.php/partitionmaint) для получения дополнительных рекомендаций, а также эффективный код для добавления новых разделов и удаления самого старого. –

ответ

3

Не уверен, но я думаю, вы должны попробовать:

ALTER TABLE employees PARTITION BY RANGE (TO_DAYS(join_date)) (
    PARTITION p1 values LESS THAN(TO_DAYS('2015-05-07')), 
    PARTITION p2 VALUES LESS THAN(MAXVALUE) 
); 
+0

Не работает. Теперь он дает мне таблицу нет раздела для значения 736093 – Vibhas

+0

повторите попытку, я исправил туман –

+0

Работал. Спасибо за помощь. – Vibhas