存于世,必要拯救世界,希望的灯光也需要积累。
记之已身,学以致用,欢迎转载,更多联系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';