コンポジット・レンジ・リスト・パーティション化は、履歴データを格納する大きな表でよく使用され、一般的に複数のディメンションでアクセスされます。通常は、データの履歴ビューが1つのアクセス・パスですが、業務によってはアクセス・パスとしてその他のカテゴリも使用されます。たとえば、地区の経理担当者は、その地区で特定の期間に加入した新顧客数に高い関心があります。ILMとその階層ストレージ方式が、レンジ・リスト・パーティション表を作成する一般的な理由です。古いデータを移動して圧縮しても、リスト・ディメンションのパーティション・プルーニングを引き続き行うことができます。
例3-9では、レンジ・リスト・パーティション化されたcall_detail_records
表を作成します。電気通信会社はこの表を使用して、時間経過に応じて特定の種類の通信を分析できます。この表では、from_number
とto_number
に対するローカル索引が使用されます。
この例では、時間隔パーティション化が使用されています。データが表に挿入されたときに時間隔パーティションを自動的に作成するために、レンジ・パーティション化に加えて時間隔パーティション化を使用できます。
例3-9 コンポジット・レンジ - リスト・パーティション化による表の作成
CREATE TABLE call_detail_records ( id NUMBER , from_number VARCHAR2(20) , to_number VARCHAR2(20) , date_of_call DATE , distance VARCHAR2(1) , call_duration_in_s NUMBER(4) ) PARTITION BY RANGE(date_of_call) INTERVAL (NUMTODSINTERVAL(1,'DAY')) SUBPARTITION BY LIST(distance) SUBPARTITION TEMPLATE ( SUBPARTITION local VALUES('L') TABLESPACE tbs1 , SUBPARTITION medium_long VALUES ('M') TABLESPACE tbs2 , SUBPARTITION long_distance VALUES ('D') TABLESPACE tbs3 , SUBPARTITION international VALUES ('I') TABLESPACE tbs4 ) (PARTITION p0 VALUES LESS THAN (TO_DATE('01-JAN-2005','dd-MON-yyyy'))) PARALLEL; CREATE INDEX from_number_ix ON call_detail_records(from_number) LOCAL PARALLEL NOLOGGING; CREATE INDEX to_number_ix ON call_detail_records(to_number) LOCAL PARALLEL NOLOGGING;