4

在 MySQL 中使用列表对表进行分区时,如何为剩余项目生成分区?

例如:

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 中确实有效。

4

1 回答 1

3

范围分区不同,列表分区没有“包罗万象” 。引用文档:

与 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
);

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

于 2012-10-27T21:36:14.583 回答