范围分区是按照某个列上的数据范围进行分区的,如果某个列上的数据无法通过划分范围的方法进行分区,并且该列上的数据是相对固的一些值,可以考虑使用 LIST 分区。一般来说,对于数字型或者日期型的数据,适合采用范围分区的方法;而对于字符型数据,取值比较固定的,则适合于采用 LIST 分区的方法。
在创建 LIST 分区时,通过 PARTITION BY LIST 子句指定对表进行 LIST 分区,然后在每个分区中分区列的取值通过 VALUES 子句指定。当用户向表插入数据时,只要分区列的数据与 VALUES 子句指定的数据之一相等,该行数据便会写入相应的分区子表中。
LIST 分区的分区键必须唯一。
通过指定表中的某个列的离散值集,来确定应当存储在一起的数据。分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。
创建列表分区
CREATE TABLE TEST.T4(
sales_id int,
sales_name VARCHAR2(20),
sales_date DATE,
city CHAR(10)
)
PARTITION BY LIST(city)
(
PARTITION P1 VALUES('bj','tj','heb','qd'),
PARTITION P2 VALUES('sh','nj','ss','cz'),
PARTITION P3 VALUES('wh','cs','cd','hf'),
PARTITION P4 VALUES('gz','sz','fj','yn')
);
插入数据
INSERT INTO TEST.T4 VALUES(1,'zhangsan','2024-4-8','yn');
commit;
添加默认分区
ALTER TABLE TEST.T4 ADD PARTITION PN VALUES(DEFAULT);
INSERT INTO TEST.T4 VALUES(3,'lisa','2024-4-8','zj');
commit