表のパーティションのサブセットのローカルおよびグローバル索引を作成して、索引作成の柔軟性を向上できます。この機能は、デフォルトの表索引付けプロパティを使用してサポートされます。表が作成または変更される場合、デフォルト索引付けプロパティを表またはそのパーティションに指定できます。表索引付けプロパティは、部分索引にのみ考慮されます。
索引が表にPARTIALとして作成される場合:
ローカル索引: 索引付けが表パーティションに有効な場合に使用でき、無効な場合に使用できない索引パーティションが作成されます。索引または索引パーティション・レベルでUSABLE/UNUSABLEを指定して、この動作を上書きできます。
グローバル索引: 索引付けが有効なパーティションのみを含み、その他は除外します。
この機能は、一意の索引または一意の制約の施行に使用される索引にサポートされません。FULLおよびPARTIALの両方が指定されない場合、FULLがデフォルトです。
デフォルトでは、索引がFULL索引として作成され、表索引付けプロパティから索引を分離します。
INDEXING句は、パーティションおよびサブパーティション・レベルで指定することもできます。
次のSQL DDLは、次の項目で表を作成します。
パーティションORD_P1およびORD_P3がすべての部分グローバル索引に含まれます
上の2つの表パーティションに対応するローカル索引パーティション(PARTIALで作成された索引用)が作成され、デフォルトで使用できます。
他のパーティションはすべての部分グローバル索引から除外され、ローカル索引で使用不可で作成されます(PARTIALで作成された索引用)。
CREATE TABLE orders (
order_id NUMBER(12),
order_date DATE CONSTRAINT order_date_nn NOT NULL,
order_mode VARCHAR2(8),
customer_id NUMBER(6) CONSTRAINT order_customer_id_nn NOT NULL,
order_status NUMBER(2),
order_total NUMBER(8,2),
sales_rep_id NUMBER(6),
promotion_id NUMBER(6),
CONSTRAINT order_mode_lov CHECK (order_mode in ('direct','online')),
CONSTRAINT order_total_min CHECK (order_total >= 0))
INDEXING OFF
PARTITION BY RANGE (ORDER_DATE)
(PARTITION ord_p1 VALUES LESS THAN (TO_DATE('01-MAR-1999','DD-MON-YYYY'))
INDEXING ON,
PARTITION ord_p2 VALUES LESS THAN (TO_DATE('01-JUL-1999','DD-MON-YYYY'))
INDEXING OFF,
PARTITION ord_p3 VALUES LESS THAN (TO_DATE('01-OCT-1999','DD-MON-YYYY'))
INDEXING ON,
PARTITION ord_p4 VALUES LESS THAN (TO_DATE('01-MAR-2000','DD-MON-YYYY')),
PARTITION ord_p5 VALUES LESS THAN (TO_DATE('01-MAR-2010','DD-MON-YYYY')));
INDEXING PARTIAL句を指定する前のSQL例の表索引付けプロパティに従って、ローカルまたはグローバル部分索引を作成できます。
CREATE INDEX ORDERS_ORDER_TOTAL_GIDX ON ORDERS (ORDER_TOTAL) GLOBAL INDEXING PARTIAL;
ORDERS_ORDER_TOTAL_GIDX索引が作成され、INDEXING ONを指定したパーティションのみ索引付けされ、残りのパーティションは除外されます。
ビューの更新には、次の内容が含まれます。
表索引付けプロパティ - 列INDEXINGが*_PART_TABLES、*_TAB_PARTITIONSおよび*_TAB_SUBPARTITIONSビューに追加されます。
この列は、索引付けの有効または無効を指定する2つの値ONおよびOFFのいずれかを含みます。
索引レベル・プロパティとしての部分グローバル索引 - 新しい列INDEXINGがUSER_INDEXESビューに追加されます。この列をFULLまたはPARTIALに設定できます。
部分グローバル索引の最適化 - グローバル索引(パーティション)がDROP/TRUNCATE PARTITIONまたはMODIFY PARTITION INDEXING OFFの実行中に遅延した索引メンテナンスのために古いエントリを含む場合、列ORPHANED_ENTRIESがディクショナリ・ビューUSER_INDEXESおよびUSER_IND_PARTITIONSに追加されて表示されます。列には、次の3つの値のいずれかを指定できます。
YES => 索引(パーティション)は親がないエントリを含みます
NO => 索引(パーティション)は親がないエントリを含みません
関連項目:
データベース・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。