4.8 パーティションオプション、マテリアライズドビュー

4.8 パーティションオプション、マテリアライズドビュー

パーティション索引

パーティションは、表だけではなく、表内に作成する索引にも適用することができます。
パーティション索引は、その捜索対象範囲が大規模な表ではなく、区切られたパーティションになるため、さらに効果が倍増します。

ローカル索引 表と索引を同じ列でパーティション化 表と索引を同じ列でパーティション化
ローカル索引 索引のみパーティション化 索引のみパーティション化
グローバル索引 表と索引を同じ列でパーティション化 表と索引を同じ列でパーティション化

 表4-9 パーティション表とパーティション索引

表と索引は、それぞれをパーティションと呼ばれる小さな管理単位に分割することができます。
したがって、下記のようなパターンを考えることができます。

  • 表と索引を同じ列でパーティション化し、索引列もパーティション化キー列を使用
  • 索引のみパーティション化
  • 表のパーティション化キーとは異なるパーティション化キーで索引をパーティション化する

いろいろなパターンが可能なので、適切なものを選択して利用してください。

ローカル同一キー索引

  • パーティション表のキー=索引パーティションのキー
  • 索引列=索引パーティションキー
  • 検索時、1つのパーティションキーヘのアクセスのみで完了
  • 表の更新がおきた場合も、対象の索引パーティションは1つ

【パーティション表の作成】

【上記表パーティションに対して、ローカル同一キー索引を作成】

パーティション範囲は、表によって決定されます。
ローカル同一キー索引は、パフォーマンス上、また管理上、最も有効な索引として使用できます。

ローカル非同一キー索引

  • パーティション表のキー=索引パーティションのキー
  • 索引列!=索引パーティションキー
  • 模索時、対象となるすべての索引パーティションヘのアクセスが必要
  • 表の更新がおきた場合も、対象の索引パーティションは1つ

【パーティション表の作成】

【上記表パーティションに対して、ローカル非同一キー索引を作成】
パーティション範囲は、表によって決定されます。
ローカル非同一キー索引も、ローカル同一キー索引同様、パフォーマンス上、また管理上、最も有効な索引として使用できます

グローバル同一キー索引

  • パーティション表のキー!=索引パーティションのキー
  • 索引列=索引パーティションキー
  • 検索時、索引はすでにパーティション化されているので索引の検索コストは異なるため、パーティション索引のメンテナンスが別途必要
  • 表の更新がおきた場合も、対象の索引パーティションは1つ

【パーティション表の作成】

【上記表パーティションに対して、グローバル同一キー索引を作成】

パーティション範囲は、CREATE INDEX文のPARTITION句で決まります。 グローバル索引は、表パーティションの1つが削除されるなどの修正が行われると、グローバル索引の全パーティションが影響を受け、グローバル索引の全パーティションを再作成する必要がありました。
Oracle9iでは、このデフォルトの動作を無効にする句が提供されています。

表パーティションのメンテナンス操作でALTER TABLE文のUPDATE GLOBAL INDEX句を指定すると、表のメンテナンス操作と同時にグローバル索引のメンテナンスも同時に行われます。
ただし、表のメンテナンス操作自体にコストがかかるため、グローバル索引は、管理性の面で推奨できません。

< 前へ | 4.8 パーティションオプション、マテリアライズドビュー | 次へ >

解説トレーナー

Oracle / 上流工程 担当 中村 才千代

データベース設計、システム構築の上流~下流工程全般のインストラクターです。SE時代の経験を生かし「業務を知るエンジニアこそDB設計に関わるべき」「DB設計に携わるエンジニアは業務を知る人に知恵を貸してもらう」ことを伝えたいと思っています。

■認定・受賞

2000年 Oracle University「Best Instructor of the Year」受賞
2002年 Oracle University「Best Instructor of the Year」受賞

Page Top