列出剩余项目的分区

时间:2012-10-27 21:18:26

标签: mysql oracle

使用列表在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中有效。

1 个答案:

答案 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
);

我假设这只是一个例子。对主键中的每个键进行分区是没有意义的。