Oracle9i现在有两个分割的方法:范围分割和新加入的列表分割。范围分割需要标量数值型值,列表分割允许使用非标量数据分割。
为了看列表分割与范围分割的不同之处,我们使用一个简单的例子。这里我们将看到一个使用范围分割了的表,其中area_code是用来进行分割的数据。
Create table customer
(
Last_name varchar2(30),
area_code number
. . .
)
PARTITION BY RANGE (area_code)
(
PARTITION part_505 values less than(505),
PARTITION part_212 values less than(212),
PARTITION part_919 values less than(919),
PARTITION part_252 values less than(252),
PARTITION part_415 values less than(MAXVALUE)
);
不像范围分割需要一个NUMBER或者DATE标量值,列表分割能根据你想使用的任何值来隔离数据。下面是一个客户数据库的简单例子,这里数据根据客户所在的州来分割。
create table
customer
(col values)
partition by list (state_name)
partition yankees values ('New York','Maine'),
partition rebels values ('North Carolina', South Carolina');
我们可以看到,列表分割为大Oracle表的分割增加了灵活性,你有更多的选择来合理的划分你的行数据。