4.8 パーティションオプション、マテリアライズドビュー
パーティション索引
パーティションは、表だけではなく、表内に作成する索引にも適用することができます。
パーティション索引は、その捜索対象範囲が大規模な表ではなく、区切られたパーティションになるため、さらに効果が倍増します。
ローカル索引 | 表と索引を同じ列でパーティション化 | ![]() |
ローカル索引 | 索引のみパーティション化 | ![]() |
グローバル索引 | 表と索引を同じ列でパーティション化 | ![]() |
表4-9 パーティション表とパーティション索引
表と索引は、それぞれをパーティションと呼ばれる小さな管理単位に分割することができます。
したがって、下記のようなパターンを考えることができます。
- 表と索引を同じ列でパーティション化し、索引列もパーティション化キー列を使用
- 索引のみパーティション化
- 表のパーティション化キーとは異なるパーティション化キーで索引をパーティション化する
いろいろなパターンが可能なので、適切なものを選択して利用してください。
ローカル同一キー索引
- パーティション表のキー=索引パーティションのキー
- 索引列=索引パーティションキー
- 検索時、1つのパーティションキーヘのアクセスのみで完了
- 表の更新がおきた場合も、対象の索引パーティションは1つ
【パーティション表の作成】
【上記表パーティションに対して、ローカル同一キー索引を作成】
パーティション範囲は、表によって決定されます。
ローカル同一キー索引は、パフォーマンス上、また管理上、最も有効な索引として使用できます。
ローカル非同一キー索引
- パーティション表のキー=索引パーティションのキー
- 索引列!=索引パーティションキー
- 模索時、対象となるすべての索引パーティションヘのアクセスが必要
- 表の更新がおきた場合も、対象の索引パーティションは1つ
【パーティション表の作成】
【上記表パーティションに対して、ローカル非同一キー索引を作成】
パーティション範囲は、表によって決定されます。
ローカル非同一キー索引も、ローカル同一キー索引同様、パフォーマンス上、また管理上、最も有効な索引として使用できます
ローカル非同一キー索引も、ローカル同一キー索引同様、パフォーマンス上、また管理上、最も有効な索引として使用できます
グローバル同一キー索引
- パーティション表のキー!=索引パーティションのキー
- 索引列=索引パーティションキー
- 検索時、索引はすでにパーティション化されているので索引の検索コストは異なるため、パーティション索引のメンテナンスが別途必要
- 表の更新がおきた場合も、対象の索引パーティションは1つ
【パーティション表の作成】
【上記表パーティションに対して、グローバル同一キー索引を作成】
パーティション範囲は、CREATE INDEX文のPARTITION句で決まります。 グローバル索引は、表パーティションの1つが削除されるなどの修正が行われると、グローバル索引の全パーティションが影響を受け、グローバル索引の全パーティションを再作成する必要がありました。
Oracle9iでは、このデフォルトの動作を無効にする句が提供されています。
表パーティションのメンテナンス操作でALTER TABLE文のUPDATE GLOBAL INDEX句を指定すると、表のメンテナンス操作と同時にグローバル索引のメンテナンスも同時に行われます。
ただし、表のメンテナンス操作自体にコストがかかるため、グローバル索引は、管理性の面で推奨できません。
解説トレーナー