【应用场景】:参与分区的字段是时间day_id,类型是VARCHAR2(10),精确到小时,如:2010110923【方案一】:用listcreate table test (
day_id varchar2(10),
name varchar2(20)
) partition by list(day_id)
(
partition p2010010101 values ('2010010101') tablespace tbs
)
【方案二】:用rangecreate table test (
day_id varchar2(10),
name varchar2(20)
) partition by range(day_id)
(
partition p2010010101 values less than ('2010010102') tablespace tbs
)
【本人的想法】:我偏向于list,因为简单,就是“等于”不喜欢range,是因为less than()里的那个时间需要通过day_id转换为时间获取,并且再转回为varchar,繁琐但是我想听听更多大虾的意见
day_id varchar2(10),
name varchar2(20)
) partition by list(day_id)
(
partition p2010010101 values ('2010010101') tablespace tbs
)
【方案二】:用rangecreate table test (
day_id varchar2(10),
name varchar2(20)
) partition by range(day_id)
(
partition p2010010101 values less than ('2010010102') tablespace tbs
)
【本人的想法】:我偏向于list,因为简单,就是“等于”不喜欢range,是因为less than()里的那个时间需要通过day_id转换为时间获取,并且再转回为varchar,繁琐但是我想听听更多大虾的意见
列表分区存在以下一些限制:
● 只可以在列的列表中指定一个分区键,但它不能是 LOB 列。如果分区键是一个对
象类型列,还可以按照列类型的某个特性进行分区。
● VALUES 子句中的每个分区值必须在表的所有分区中是唯一的。
● 不能在索引编排表中使用列表分区。
● 组成每个分区的值列表的字符串最长可以到 4KB。
● 所有分区的分区值累计最大数目不能超过 64KB-1。