もっと詳しく

背景情報

ローカルインデックスでは、特定のインデックスパーティション内のすべてのキーは、単一の基になるテーブルパーティションに格納されている行のみを参照します。 ローカルインデックスは、を指定することによって作成されます ローカル 属性。

グローバルパーティションインデックスでは、特定のインデックスパーティションのキーは、複数の基になるテーブルパーティションまたはサブパーティションに格納されている行を参照する場合があります。 グローバルインデックスは、範囲またはハッシュパーティションにすることができますが、任意のタイプのパーティションテーブルで定義できます。 グローバルインデックスは、 グローバル 属性。

部分グローバルインデックス機能は、一意のインデックス、または一意の制約を適用するために使用されるインデックスではサポートされていません。 また、索引構成表のindexing_clauseを指定することはできません。 インデックスがテーブル上にPARTIALとして作成される場合:

  • ローカルインデックス:インデックスパーティションは、テーブルパーティションのインデックスがオンになっている場合は使用可能になり、それ以外の場合は使用できなくなります。 (create indexステートメントのインデックスまたはインデックスパーティションレベルでUSABLEまたはUNUSABLEプロパティを指定することにより、この動作をオーバーライドできます。)
  • グローバルインデックス:インデックスがオンになっているパーティションのみを含め、他のパーティションは除外します。

グローバルインデックス

グローバルインデックスは1対多の関係であり、1つのインデックスパーティションを多数のテーブルパーティションにマップできます。 ドキュメントによると、「グローバルインデックスは、範囲またはハッシュ方式でパーティション化でき、任意のタイプのパーティション化された、またはパーティション化されていないテーブルで定義できます」。

構文:

CREATE INDEX item_idx
    on all_fact (item_nbr)
    GLOBAL
    (PARTITION city_idx1 VALUES LESS THAN (100)),
    (PARTITION city_idx1 VALUES LESS THAN (200)),
    (PARTITION city_idx1 VALUES LESS THAN (300)),
    (PARTITION city_idx1 VALUES LESS THAN (400)),
    (PARTITION city_idx1 VALUES LESS THAN (500));

ローカルインデックス

ローカルインデックスは、インデックスパーティションとテーブルパーティションの間の1対1のマッピングです。 一般に、ローカルインデックスを使用すると、パーティションプルーニングを使用して高速なSQL実行プランを生成するためのよりクリーンな「分割統治」アプローチが可能になります。

構文:

CREATE INDEX year_idx
    On all_fact (order_date)
    LOCAL
    (PARTITION name_idx1),
    (PARTITION name_idx2),
    (PARTITION name_idx3);

テーブルパーティションを移動するときにグローバルインデックスとローカルインデックスの両方を更新するにはどうすればよいですか?

‘UPDATE INDEXES’句を使用して、パーティションの移動中にグローバルインデックスとローカルインデックスの両方を更新できます。

例えば:

SQL> ALTER TABLE T1 MOVE PARTITION PART_200903 TABLESPACE users
UPDATE INDEXES;

また

SQL> ALTER TABLE T1 MOVE PARTITION PART_200903 TABLESPACE users
UPDATE INDEXES (IDX_T1_01(PARTITION PART_200903));

The post Oracleデータベースのローカルインデックスとグローバルインデックスとは–オタク日記 appeared first on Gamingsym Japan.