oracle 优化 表分区示例

 

--范围分区 PARTITION BY RANGE(--)
/*create table fanwei(
       fid number(11) primary key,
       fdate date ,
       fname varchar2(12)     
)
PARTITION BY RANGE(fdate)
(
  PARTITION F1 VALUES LESS THAN(to_date('2011-1-01','YYYY-MM-DD')),
  PARTITION F2 VALUES LESS THAN(to_date('2012-1-01','YYYY-MM-DD')),
  PARTITION F3 VALUES LESS THAN(to_date('2013-1-01','YYYY-MM-DD')),
  PARTITION F4 VALUES LESS THAN(MAXVALUE)
);

drop table fanwei;
select * from fanwei;
select * from fanwei PARTITION (F2);
insert into fanwei values(1,to_date('2011-2-01','YYYY-MM-DD'),'12');*/

--散列分区 PARTITION BY HASH(COLUMN_NAME)

/*PARTITION BY HASH(column_name)
(
          partition d1 [TABLESPACE TBS1],
          partition d2 [TABLESPACE TBS2],
          partition d3 [TABLESPACE TBS2],
          partition d4
);*/
-----------------------------------------
/*CREATE TABLE Employee(
       E_ID NUMBER(11) PRIMARY KEY,
       E_NAME VARCHAR2(32),
       Department varchar2(10)
)
PARTITION BY HASH(Department)
(
          partition d1,
          partition d2,
          partition d3,
          partition d4
);

drop table Employee;


CREATE TABLE Employee(
       E_ID NUMBER(11) PRIMARY KEY,
       E_NAME VARCHAR2(32),
       Department varchar2(10)
)
PARTITION BY HASH(Department)
partitions 4;*/


--列表分区 PARTITION BY LIST(--)

/*CREATE TABLE EMPLOYEE1(E_ID NUMBER(4),E_ADDRESS VARCHAR2(16))
PARTITION BY LIST(E_ADDRESS)(
          PARTITION north values('北京'),
          PARTITION west values('新疆','青藏'),
          PARTITION east values('上海','浙江'),
          PARTITION south values('海南')
);

select * from employee1 partition (north);*/

 

--复合分区(范围与散列或者列表 相组合)
  CREATE TABLE SALES
 ( 
  P_ID number(11),
  SALES_DATE DATE NOT NULL,
  SALES_COST VARCHAR2(10)
 )
  PARTITION BY RANGE(SALES_DATE) --range 范围
  SUBPARTITION BY HASH(SALES_COST) --散列
  SUBPARTITIONS 5(
        PARTITION S1 VALUES LESS THAN (to_date('2011-1-01','YYYY-MM-DD')),
        PARTITION S2 VALUES LESS THAN (to_date('2012-1-01','YYYY-MM-DD')),
        PARTITION S3 VALUES LESS THAN (to_date('2013-1-01','YYYY-MM-DD')),
        PARTITION S4 VALUES LESS THAN (to_date('2014-1-01','YYYY-MM-DD')),
        PARTITION S5 VALUES LESS THAN (MAXVALUE)
  );
 
 
  --添加分区 --分区界限必须调整为大于最后一个分区界限
  ALTER TABLE EMPLOYEE1 ADD PARTITION nwes VALUES ('中部');
 
  --删除分区
  ALTER TABLE EMPLOYEE1 DROP PARTITION nwes;
  --截断分区
  ALTER TABLE EMPLOYEE1 TRUNCATE PARTITION nwes;
  --合并分区 MERGE-合并
  ALTER TABLE SALES MERGE PARTITIONS S1,S2 INTO PARTITION S2;
  --拆分分区
  ALTER TABLE SALES SPLIT PARTITION S2 AT (to_date('2011-1-01','YYYY-MM-DD')) INTO (PARTITION S1,PARTITION S2);

SELECT * from sales partition (s2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值