oracle中表的所有分区方式,以及适用范围,并举出相应的例子
- 提问者网友:遮云壑
- 2021-06-01 17:41
- 五星知识达人网友:神也偏爱
- 2021-06-01 17:47
--创建范围分区
create table temp1
(
empno number ,
ename varchar2(1000),
sal number
)
partition by range (sal)
(
partition p1 values less than (1000),
partition p2 values less than (2000),
partition p3 values less than (3000)
--如果是日期 to_date('2004-01-01','YYYY-MM-DD')或 date '2004-01-01'
);
--创建散列分区
create table temp3
(
empno number ,
ename varchar2(1000),
sal number
)
partition by hash (sal)
(
partition p1,
partition p2,
partition p3,
partition p4
);
或
create table temp3
(
empno number ,
ename varchar2(1000),
sal number
)
partition by hash (sal)
partitions 4;
--创建(范围-散列)复合分区
create table temp1
(
empno number ,
ename varchar2(1000),
sal number
)
partition by range (sal)
subpartition by hash (empno)
subpartitions 5
(
partition p1 values less than (1000),
partition p2 values less than (2000),
partition p3 values less than (3000)
)
--创建(范围-列表)复合分区
create table temp1
(
empno number ,
ename varchar2(1000),
sal number
)
PARTITION BY RANGE (sal)
SUBPARTITION BY LIST (ename)
SUBPARTITION TEMPLATE
(SUBPARTITION man VALUES ('刘德华', '张学友'),
SUBPARTITION woman VALUES ('王菲', '赵薇'),
SUBPARTITION other VALUES (DEFAULT))
(PARTITION p1 VALUES LESS THAN (1000),
PARTITION p2 VALUES LESS THAN (2500),
PARTITION p3 VALUES LESS THAN (3000));
--创建列表分区
create table temp2
(
empno number(10) ,
ename varchar2(1000),
sal number(10)
)
partition by list (ename)
(
partition ldh values ('刘德华'),
partition zrf values ('周润发'),
partition qt values ('王菲','赵薇')
);
----------------------------------
以上决定是本人自己编写出来的。
复合分区:两种分区方式一起用
列表分区:与指定的值相符合的分为一个区
范围分区:在指定的范围分为一个区
散列分区:无规则分区,系统自带的一个算法进行分区
希望以上对你有帮助!