◼︎ 概要
以前パーティションについてまとめてみましたが
パーティション化されたテーブルでインデックスを作成する際にローカルインデックスとグローバルインデックスがあるのでその違いについて調べます
Oracle勉強シリーズ
- Oracleの表領域についてまとめてみた
- Oracleのパーティションについてまとめてみた
- Oracle ダイレクトロードインサートについて
- OracleのSEQUENCEについて
- Oracleのパーティションインデックスについて
- Oracleのフェイルオーバーについて
- Oracle11gから12cへの移行の注意点
◼︎ ローカル・グローバルインデックスについて
説明 | |
ローカルインデックス | パーティションに合わせてインデックスも分割される |
グローバルインデックス | パーティション全体で1つのインデックスを作成する |
さらにローカルパーティションインデックスは2つに分類できます
説明 | |
同一キー索引 | パーティションキーと索引が同じ |
非同一キー索引 | パーティションキーと索引が異なる |
ローカルインデックスのほうが1つ1つのパーティション・索引で
独立できるので管理がしやすく参照する時も早くなるらしい
索引の作りすぎは問題の元なので全部ローカルインデックスにすればいいというわけではない
◼︎ 使い方について
ローカルインデックスかグローバルインデックスかの確認方法
// テーブル名、インデックス目、表領域名、索引種別をカンマ区切りで出力 SQL> select table_name||','||index_name||','||tablespace_name||','||partitioned from user_indexes; ローカル索引の場合にpartitionedがYESとなっている
ローカルorグローバルインデックスの作成方法
// LOCALインデックス作成 CREATE INDEX インデックス名 ON テーブル名(列名, ...) LOCAL; // GLOBALインデックス作成 CREATE INDEX インデックス名 ON テーブル名(列名, ...) GLOBAL PARTITION BY RANGE(列名) ( PARTITION idx_partition名1 VALUES LESS THAN(条件), PARTITION idx_partition名2 VALUES LESS THAN(MAXVALUE) );
注意点としてインデックス作成時の列名にはパーティション化した列を全て含ませる必要がある
コメントを書く
コメント一覧