mytable像这样:
CREATE TABLE `test1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`project_id` int(11) NOT NULL,
`md5` varchar(255) NOT NULL,
`create_time` datetime NOT NULL,
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`,`project_id`,`md5`),
KEY `index_id` (`md5`),
) ;
我想按md5分区。所以我创建了一个函数:
alter table test1 partition by HASH(FLOOR(`md5`)) PARTITIONS 5;
但失败了:
ERROR 1491 (HY000) The PARTITION function returns the wrong type
非常感谢您!
答案 0 :(得分:0)
FLOOR
需要一个数字参数。如果MD5字符串为c51ce410c124a10e0db5e4b97fc2af39
,则将其视为0。将近一半的md5被视为零。
HASH分区实际上是无用的。 IT当然不会提供任何性能。