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子句指定的数据之一相等,该行数据便被写入对应的分区中。