分区表中subpartition的使用方法

在Oracle分区中,有一个subpartition 二级分区的用法。一般用在组合分区里。先按照range分区,每个子分区又按照list or hash分区。
范围哈希组合分区:
create table emp (
empno number(4),
ename varchar2(30),
hiredate date)
partition by range (hiredate)
subpartition by hash (empno)
subpartitions 2
(partition e1 values less than (to_date('20020501','YYYYMMDD')),
partition e2 values less than (to_date('20021001','YYYYMMDD')),
partition e3 values less than (maxvalue));

CREATE TABLE customers_part (
customer_id NUMBER(6),
cust_first_name VARCHAR2(20),
cust_last_name VARCHAR2(20),
nls_territory VARCHAR2(30),
credit_limit NUMBER(9,2))
PARTITION BY RANGE (credit_limit)
SUBPARTITION BY LIST (nls_territory)
SUBPARTITION TEMPLATE
(SUBPARTITION east VALUES ('CHINA', 'JAPAN', 'INDIA', 'THAILAND'),
SUBPARTITION west VALUES ('AMERICA', 'GERMANY', 'ITALY', 'SWITZERLAND'),
SUBPARTITION other VALUES (DEFAULT))
(PARTITION p1 VALUES LESS THAN (1000),
PARTITION p2 VALUES LESS THAN (2500),
PARTITION p3 VALUES LESS THAN (MAXVALUE));


进行删除和增加分区与操作rang分区一样。
增加一个分区
alter TABLE customers_part ADD PARTITION sales2000_q1
VALUES LESS THAN (TO_DATE(‘2000-04-01’,’YYYY-MM-DD’)
( SUBPARTITION sales2000_q1_sub_par1 VALUES ('01'),
SUBPARTITION sales2000_q1_sub_par2 VALUES ('02')
);

删除一个分区 alter table customers_part drop partition sales2000_q1;
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我是一名语言模型,无法提供完整的代码。但我可以给你一些基本的概念和示例。 1. 簇表(Clustered Table): 簇表是按照表的主键将数据物理上存储在一起的表。这种表的查询效率较高,但是插入、删除和更新数据的效率较低。以下是一个简单的簇表的创建语句: ``` CREATE CLUSTER my_cluster_table (id NUMBER) TABLESPACE my_tablespace STORAGE (INITIAL 10M NEXT 10M); ``` 2. 范围分区表(Range Partitioned Table): 范围分区表是按照指定的范围将数据分散存储的表。例如,按照日期对数据进行分区。以下是一个简单的范围分区表的创建语句: ``` CREATE TABLE my_range_table (id NUMBER, name VARCHAR2(50), date_of_birth DATE) PARTITION BY RANGE (date_of_birth) (PARTITION p1 VALUES LESS THAN (TO_DATE('01-01-1990','DD-MM-YYYY')), PARTITION p2 VALUES LESS THAN (TO_DATE('01-01-2000','DD-MM-YYYY')), PARTITION p3 VALUES LESS THAN (MAXVALUE)); ``` 3. 散列分区表(Hash Partitioned Table): 散列分区表是根据指定的散列函数将数据分散存储的表。这种分区方式可以有效地平衡数据的分布。以下是一个简单的散列分区表的创建语句: ``` CREATE TABLE my_hash_table (id NUMBER, name VARCHAR2(50), department VARCHAR2(50)) PARTITION BY HASH (department) PARTITIONS 4; ``` 4. 列表分区表(List Partitioned Table): 列表分区表是根据指定的列值将数据分散存储的表。例如,按照地区对数据进行分区。以下是一个简单的列表分区表的创建语句: ``` CREATE TABLE my_list_table (id NUMBER, name VARCHAR2(50), region VARCHAR2(50)) PARTITION BY LIST (region) (PARTITION p1 VALUES ('North'), PARTITION p2 VALUES ('South'), PARTITION p3 VALUES ('East'), PARTITION p4 VALUES ('West')); ``` 5. 组合分区表(Composite Partitioned Table): 组合分区表是根据多个分区键将数据分散存储的表。以下是一个简单的组合分区表的创建语句: ``` CREATE TABLE my_composite_table (id NUMBER, name VARCHAR2(50), date_of_birth DATE, department VARCHAR2(50)) PARTITION BY RANGE (date_of_birth) SUBPARTITION BY HASH (department) SUBPARTITIONS 4 (PARTITION p1 VALUES LESS THAN (TO_DATE('01-01-1990','DD-MM-YYYY')) (SUBPARTITION s1, SUBPARTITION s2, SUBPARTITION s3, SUBPARTITION s4), PARTITION p2 VALUES LESS THAN (TO_DATE('01-01-2000','DD-MM-YYYY')) (SUBPARTITION s5, SUBPARTITION s6, SUBPARTITION s7, SUBPARTITION s8), PARTITION p3 VALUES LESS THAN (MAXVALUE) (SUBPARTITION s9, SUBPARTITION s10, SUBPARTITION s11, SUBPARTITION s12)); ``` 6. 对象表(Object Table): 对象表是存储对象类型数据的表。以下是一个简单的对象表的创建语句: ``` CREATE TYPE my_object AS OBJECT (id NUMBER, name VARCHAR2(50)); CREATE TABLE my_object_table OF my_object; ``` 7. 嵌套表(Nested Table): 嵌套表是存储嵌套表类型数据的表。以下是一个简单的嵌套表的创建语句: ``` CREATE TYPE my_nested AS TABLE OF VARCHAR2(50); CREATE TABLE my_nested_table (id NUMBER, values my_nested); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值