我想在MySQL表上创建分区和子分区,以优化表的性能。
对于Ex: -
Create table mytest (id int not null, mydate date)
PARTITION BY LIST (id)
SUBPARTITION BY RANGE (TO_DAYS(mydate))
(
PARTITION P01 VALUES IN (1,2,5,6,8,10)
(
SUBPARTITION S01 VALUES LESS THAN ('2011-10-23'),
SUBPARTITION S02 VALUES LESS THAN ('2011-10-16'),
SUBPARTITION S03 VALUES LESS THAN ('2011-10-09')
));
像这样我试图创建子分区但得到一个错误,说RANGE附近的语法不正确。
任何人都可以帮助我了解PARTITION BY LIST和SUBPARTITION BY RANGE是否被允许。
答案 0 :(得分:4)
您无法按RANGE
进行子分区。您只能按HASH
或KEY
进行子分区。它在documentation:
"In MySQL 5.1, it is possible to subpartition tables that are partitioned by RANGE or LIST. Subpartitions may use either HASH or KEY partitioning."