使用列表在MySQL中对表进行分区时,如何为剩余项生成分区?
E.G:
CREATE TABLE tbl
(
ID integer
)
PARTITION BY LIST (ID)
(
PARTITION P1 values in (1),
PARTITION P2 values in (2),
PARTITION P3 values in (3),
PARTITION Pother values in (<all remaining values of ID>)
);
在Oracle中,我使用values in (default)
,但这在MySQL中有效。
答案 0 :(得分:3)
与range partitioning不同,list partitioning中没有“全能”。引用文档:
与RANGE分区的情况不同,没有“全能”这样的情况 作为MAXVALUE;分区表达式的所有预期值 应该包含在PARTITION ... VALUES IN(...)子句中。一个INSERT 包含不匹配的分区列值的语句失败 错误......
不幸的是,我相信,你也无法组合列表和范围分区。我不完全确定为什么你想在这个特定的实例中使用列表分区;范围分区不会很好吗?
CREATE TABLE tbl
(
ID integer
)
PARTITION BY RANGE (ID)
(
PARTITION P1 values less than (2),
PARTITION P2 values less than (3),
PARTITION P3 values less than (4),
PARTITION Pother values less than maxvalue
);
我假设这只是一个例子。对主键中的每个键进行分区是没有意义的。