--测试总结:
复合分区,有个很奇妙的地方,就是当数据插入到符合条件的第一个分区中。
实现算法推测:
对于按C1,C2两列进行复合分区的情况,插入时,首先判断是否小于C1,如果有匹配分区,则插入到符合条件的第一个分区中,否则如果插入的值=C1,则判断C2,如果有匹配分区,则插入到符合条件的第一个分区中。
第二种理解:复合分区其实等同于单列分区,只是将多个列按二进制存放格式拼组在一起,组成一个单列字段。插入数据时,将分区字段值也按二进制存放格式拼组在一起进行单值判断。
drop table pt1 ;
create table pt1 (
id1 number ,
id2 number ,
CITY VARCHAR2(30),
ID3 NUMBER(38) GENERATED ALWAYS AS (ID2*ID1 )
)
partition by RANGE (city,id1 )
(
partition p1 values LESS THAN ('BEIJING', 11),
partition p2 values LESS THAN ('BEIJING', 21),
partition p3 values LESS THAN ('TIANJIN', 11),
partition p4 values LESS THAN ('TIANJIN', 21)
) ;
--ALTER TABLE PT1 MODIFY PARTITION P1 ADD SUBPARTITION SP2 values ('TIANJIN') ;
TRUNCATE TABLE PT1 ;
insert into pt1 ( id1, city)
select rownum, 'BEIJING' from dual connect by rownum<31 ;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/350519/viewspace-1050787/ ,如需转载,请注明出处,否则将追究法律责任。