Saya pernah mendapat permintaan dari manajemen untuk memecahkan masalah query data di tabel yang di partisi dimana mereka ingin bisa melakukan query bukan hanya berdasarkan tanggal saja (dimana tabelnya memamng di partisi berdasarkan tanggal seperti kebanyakan tabel-tabel lainnya), nah saat query di lakukan berdasarkan partisi waktu yang di perlukan cukup lama mengingat data yang sangat besar . untuk mengakali hal ini maka saya buat sub partisi berdasarkan jam untuk meminimalisasi range data yang akan di query sehingga query akan lebih cepat karena di query ke level sub partisi (sub partisi berdasarkan jam ). berikut ini contoh sederhana untuk membuat partisi berdasarkan tanggal dan sub partisi berdasarkan jam :
CREATE TABLE SCOTT.BEBEK99
(
Nomor NUMBER,
Timestamps DATE,
JAM CHAR(2 BYTE)
)
TABLESPACE USERS
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
BUFFER_POOL DEFAULT
)
PARTITION BY RANGE (timestamps)
SUBPARTITION BY LIST (JAM)
(
PARTITION P1 VALUES LESS THAN (TO_DATE(' 2011-07-07 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
NOLOGGING
NOCOMPRESS
TABLESPACE USERS
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
BUFFER_POOL DEFAULT
)
( SUBPARTITION P1_SP1 VALUES ('00') TABLESPACE USERS,
SUBPARTITION P1_SP2 VALUES ('01') TABLESPACE USERS,
SUBPARTITION P1_SP3 VALUES ('02') TABLESPACE USERS,
SUBPARTITION P1_SP4 VALUES ('03') TABLESPACE USERS,
SUBPARTITION P1_SP5 VALUES ('04') TABLESPACE USERS,
SUBPARTITION P1_SP6 VALUES ('O5') TABLESPACE USERS,
SUBPARTITION P1_SP7 VALUES ('06') TABLESPACE USERS,
SUBPARTITION P1_SP8 VALUES ('07') TABLESPACE USERS,
SUBPARTITION P1_SP9 VALUES ('08') TABLESPACE USERS,
SUBPARTITION P1_SP10 VALUES ('09') TABLESPACE USERS,
SUBPARTITION P1_SP11 VALUES ('10') TABLESPACE USERS,
SUBPARTITION P1_SP12 VALUES ('11') TABLESPACE USERS,
SUBPARTITION P1_SP13 VALUES ('12') TABLESPACE USERS,
SUBPARTITION P1_SP14 VALUES ('13') TABLESPACE USERS,
SUBPARTITION P1_SP15 VALUES ('14') TABLESPACE USERS,
SUBPARTITION P1_SP16 VALUES ('15') TABLESPACE USERS,
SUBPARTITION P1_SP17 VALUES ('16') TABLESPACE USERS,
SUBPARTITION P1_SP18 VALUES ('17') TABLESPACE USERS,
SUBPARTITION P1_SP19 VALUES ('18') TABLESPACE USERS,
SUBPARTITION P1_SP20 VALUES ('19') TABLESPACE USERS,
SUBPARTITION P1_SP21 VALUES ('20') TABLESPACE USERS,
SUBPARTITION P1_SP22 VALUES ('21') TABLESPACE USERS,
SUBPARTITION P1_SP23 VALUES ('22') TABLESPACE USERS,
SUBPARTITION P1_SP24 VALUES ('23') TABLESPACE USERS ),
PARTITION P2 VALUES LESS THAN (TO_DATE(' 2011-07-08 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
NOLOGGING
NOCOMPRESS
TABLESPACE USERS
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
BUFFER_POOL DEFAULT
)
( SUBPARTITION P2_SP1 VALUES ('00') TABLESPACE USERS,
SUBPARTITION P2_SP2 VALUES ('01') TABLESPACE USERS,
SUBPARTITION P2_SP3 VALUES ('02') TABLESPACE USERS,
SUBPARTITION P2_SP4 VALUES ('03') TABLESPACE USERS,
SUBPARTITION P2_SP5 VALUES ('04') TABLESPACE USERS,
SUBPARTITION P2_SP6 VALUES ('O5') TABLESPACE USERS,
SUBPARTITION P2_SP7 VALUES ('06') TABLESPACE USERS,
SUBPARTITION P2_SP8 VALUES ('07') TABLESPACE USERS,
SUBPARTITION P2_SP9 VALUES ('08') TABLESPACE USERS,
SUBPARTITION P2_SP10 VALUES ('09') TABLESPACE USERS,
SUBPARTITION P2_SP11 VALUES ('10') TABLESPACE USERS,
SUBPARTITION P2_SP12 VALUES ('11') TABLESPACE USERS,
SUBPARTITION P2_SP13 VALUES ('12') TABLESPACE USERS,
SUBPARTITION P2_SP14 VALUES ('13') TABLESPACE USERS,
SUBPARTITION P2_SP15 VALUES ('14') TABLESPACE USERS,
SUBPARTITION P2_SP16 VALUES ('15') TABLESPACE USERS,
SUBPARTITION P2_SP17 VALUES ('16') TABLESPACE USERS,
SUBPARTITION P2_SP18 VALUES ('17') TABLESPACE USERS,
SUBPARTITION P2_SP19 VALUES ('18') TABLESPACE USERS,
SUBPARTITION P2_SP20 VALUES ('19') TABLESPACE USERS,
SUBPARTITION P2_SP21 VALUES ('20') TABLESPACE USERS,
SUBPARTITION P2_SP22 VALUES ('21') TABLESPACE USERS,
SUBPARTITION P2_SP23 VALUES ('22') TABLESPACE USERS,
SUBPARTITION P2_SP24 VALUES ('23') TABLESPACE USERS )
)
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
Cara untuk test tabelnya
-----------------------------------------------
insert into bebek99 values (1,sysdate,convert_timestamp)
select * from bebek99
select * from bebek99 partition (p1)
select * from bebek99 subpartition (p1_sp16)
No comments:
Post a Comment