oracle subpartition 子分区创建、添加、删除

存于世,必要拯救世界,希望的灯光也需要积累。
记之已身,学以致用,欢迎转载,更多联系QQ:289325414

创建表和分区,需要确定一个字段作为分区,一个字段作为子分区,层级关系为父级,例如是 查询20190722这一天的YD数据,

YYYYMMDD作为partition字段,BAND_CODE作为subpartition字段

 CREATE TABLE TEST_TABLE
   (
	YYYYMMDD VARCHAR2(12 BYTE), 
	BAND_CODE VARCHAR2(6 BYTE), 
	TEXT VARCHAR2(120 BYTE)
   )  PARTITION BY LIST (YYYYMMDD) 
  SUBPARTITION BY LIST (BAND_CODE) 
 (PARTITION P20190722 VALUES ('20190722') 
  TABLESPACE NB_DATA 
 ( SUBPARTITION P20190722_YD  VALUES ('YD') , 
  SUBPARTITION P20190722_DX  VALUES ('DX')  , 
  SUBPARTITION P20190722_LT  VALUES ('LT') ));

子分区的添加和删除(可同时创建多个或者一个子分区)

ALTER TABLE P_RST_SCAN_GRID_RSRP_ALL ADD PARTITION  P20190718 VALUES ('20190718') 
(
SUBPARTITION P20190718_YD values ('YD'),
SUBPARTITION P20190718_DX values ('DX'),
SUBPARTITION P20190718_LT values ('LT')
) ;
--删除子分区
 alter table TEST_TABLE drop SUBPARTITION P20190718_DX;

--也可以删除整个partition分区
 alter table TEST_TABLE drop PARTITION P20190718;

使用分区关键字查询(效率会比普通where快)

--子分区查询
select * from TEST_TABLE SUBPARTITION(P20190718_YD);
等同于(但上面的效率会更快)
select * from TEST_TABLE where yyyymmdd='20190718' and band_code='YD';


--分区查询
select * from TEST_TABLE PARTITION(P20190718);
等同于(但上面的效率会更快)
select * from TEST_TABLE where yyyymmdd='20190718';

查询分区关键字段

--子分区字段查询
  SELECT * FROM USER_TAB_SUBPARTITIONS WHERE TABLE_NAME = 'TEST_TABLE';
--分区字段查询  
  SELECT * FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'TEST_TABLE';

猜你喜欢

转载自blog.csdn.net/qq_37203082/article/details/97763564
今日推荐