全面学习分区表及分区索引(6)--创建range-list组合分区
SQL> create table part_rl (id number(10),name varchar2(10))
2 partition by range(id) subpartition by list(name)
3 subpartition template(
4 subpartition l1 values ('aa') tablespace part01,
5 subpartition l2 values ('bb') tablespace part02,
6 subpartition l3 values ('cc') tablespace part03)(
7 partition t_r_p1 values less than (10) tablespace part01,
8 partition t_r_p2 values less than (20) tablespace part02,
9 partition t_r_p3 values less than (maxvalue) tablespace part03);
Table created
SQL> select partition_name ,subpartition_name ,tablespace_name
2 from user_tab_subpartitions where table_name ='PART_RL';
PARTITION_NAME SUBPARTITION_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
T_R_P1 T_R_P1_L1 PART01
T_R_P1 T_R_P1_L2 PART01
T_R_P1 T_R_P1_L3 PART01
T_R_P2 T_R_P2_L1 PART02
T_R_P2 T_R_P2_L2 PART02
T_R_P2 T_R_P2_L3 PART02
T_R_P3 T_R_P3_L1 PART03
T_R_P3 T_R_P3_L2 PART03
T_R_P3 T_R_P3_L3 PART03
9 rows selected
//创建本地索引
SQL> create index idx_part_rl_id on part_rl(id) local;
Index created
SQL> select table_name ,partitioning_type,partition_count,def_subpartition_count
2 from user_part_indexes
3 where index_name = 'IDX_PART_RL_ID';
TABLE_NAME PARTITIONING_TYPE PARTITION_COUNT DEF_SUBPARTITION_COUNT
------------------------------ ----------------- --------------- ----------------------
PART_RL RANGE 3 3 //两个3.
SQL> select partition_name ,subpartition_name ,high_value ,tablespace_name
2 from user_ind_subpartitions
3 where index_name = 'IDX_PART_RL_ID';
PARTITION_NAME SUBPARTITION_NAME HIGH_VALUE TABLESPACE_NAME
------------------------------ ------------------------------ -------------------------------------------------------------------------------- ------------------------------
T_R_P1 T_R_P1_L1 'aa' PART01
T_R_P1 T_R_P1_L2 'bb' PART01
T_R_P1 T_R_P1_L3 'cc' PART01
T_R_P2 T_R_P2_L1 'aa' PART02
T_R_P2 T_R_P2_L2 'bb' PART02
T_R_P2 T_R_P2_L3 'cc' PART02
T_R_P3 T_R_P3_L1 'aa' PART03
T_R_P3 T_R_P3_L2 'bb' PART03
T_R_P3 T_R_P3_L3 'cc' PART03
9 rows selected
公共准则
1、如果选择的分区不能确保各分区内记录量的基本平均,则这种分区方式有可能是不恰当的。
比如对于range分区,假设分了10个分区,而其中一个分区中的记录数占总记录数的90%,其它9个分区只占总记录数的10%,则这个分区方式就起不到数据平衡的作用。当然,如果你的目的并不是为了平衡,只是为了区分数据,ok,对于这种情况,我想说的是,你务必要意识到存在这个问题。
2、对于分区的表或索引,其所涉及的所有分区,其块大小必须一致。
SQL> create table part_rl (id number(10),name varchar2(10))
2 partition by range(id) subpartition by list(name)
3 subpartition template(
4 subpartition l1 values ('aa') tablespace part01,
5 subpartition l2 values ('bb') tablespace part02,
6 subpartition l3 values ('cc') tablespace part03)(
7 partition t_r_p1 values less than (10) tablespace part01,
8 partition t_r_p2 values less than (20) tablespace part02,
9 partition t_r_p3 values less than (maxvalue) tablespace part03);
Table created
SQL> select partition_name ,subpartition_name ,tablespace_name
2 from user_tab_subpartitions where table_name ='PART_RL';
PARTITION_NAME SUBPARTITION_NAME TABLESPACE_NAME
------------------------------ ------------------------------ ------------------------------
T_R_P1 T_R_P1_L1 PART01
T_R_P1 T_R_P1_L2 PART01
T_R_P1 T_R_P1_L3 PART01
T_R_P2 T_R_P2_L1 PART02
T_R_P2 T_R_P2_L2 PART02
T_R_P2 T_R_P2_L3 PART02
T_R_P3 T_R_P3_L1 PART03
T_R_P3 T_R_P3_L2 PART03
T_R_P3 T_R_P3_L3 PART03
9 rows selected
//创建本地索引
SQL> create index idx_part_rl_id on part_rl(id) local;
Index created
SQL> select table_name ,partitioning_type,partition_count,def_subpartition_count
2 from user_part_indexes
3 where index_name = 'IDX_PART_RL_ID';
TABLE_NAME PARTITIONING_TYPE PARTITION_COUNT DEF_SUBPARTITION_COUNT
------------------------------ ----------------- --------------- ----------------------
PART_RL RANGE 3 3 //两个3.
SQL> select partition_name ,subpartition_name ,high_value ,tablespace_name
2 from user_ind_subpartitions
3 where index_name = 'IDX_PART_RL_ID';
PARTITION_NAME SUBPARTITION_NAME HIGH_VALUE TABLESPACE_NAME
------------------------------ ------------------------------ -------------------------------------------------------------------------------- ------------------------------
T_R_P1 T_R_P1_L1 'aa' PART01
T_R_P1 T_R_P1_L2 'bb' PART01
T_R_P1 T_R_P1_L3 'cc' PART01
T_R_P2 T_R_P2_L1 'aa' PART02
T_R_P2 T_R_P2_L2 'bb' PART02
T_R_P2 T_R_P2_L3 'cc' PART02
T_R_P3 T_R_P3_L1 'aa' PART03
T_R_P3 T_R_P3_L2 'bb' PART03
T_R_P3 T_R_P3_L3 'cc' PART03
9 rows selected
公共准则
1、如果选择的分区不能确保各分区内记录量的基本平均,则这种分区方式有可能是不恰当的。
比如对于range分区,假设分了10个分区,而其中一个分区中的记录数占总记录数的90%,其它9个分区只占总记录数的10%,则这个分区方式就起不到数据平衡的作用。当然,如果你的目的并不是为了平衡,只是为了区分数据,ok,对于这种情况,我想说的是,你务必要意识到存在这个问题。
2、对于分区的表或索引,其所涉及的所有分区,其块大小必须一致。