10.2.3 列表分区
范围分区是按照某个列上的数据范围进行分区的。如果某个列上的数据无法通过划分范围的方法进行分区,并且该列上的数据是相对固定的值,可以考虑使用列表分区。一般说来,对于数字型或者日期型的数据,适合采用范围分区的方法。而对于字符串型数据,则适合采用列表分区方法。
例如创建一个产品销售记录表sales,记录产品的销售情况。由于产品只在几个固定的城市销售,所以可以按照销售城市对该表进行分区。
SQL>CREATE TABLE sales(
sales_id number(6),
year number(4),
month number(2),
day number(2),
salesman char(8),
city char(10)
)
PARTITION BY LIST(CITY)
(PARTITION P1 VALUES('北京','上海'),
PARTITION P2 VALUES('天津','广州'),
PARTITION P3 VALUES('沈阳','武汉'),
PARTITION P4 VALUES('西安','成都')
);
在创建列表分区时,通过PARTITION BY LIST子句指定对表进行列表分区,然后通过PARTITION子句定义多个分区,在每个分区中分区列的取值通过VALUES子句指定。当用户向表中插入数据时,只要分区列的数据与VALUES子句指定的数据之一相等,该行数据便被写入对应的分区中。