Oracle Databaseのエンジンに導入された、空間索引の作成機能は、Spatial and Graph製品の重要な機能です。空間索引は、他の索引と同様、検索対象を限定するメカニズムを提供しますが、この場合は、交差および包含のような空間基準に基づきます。空間索引は、次の場合に必要です。
指定された点または対象領域(ウィンドウ問合せ)と重なる、索引付きデータ領域内のオブジェクトを検索する場合
空間的に相互作用(空間結合)する2つの索引付きデータ領域内のオブジェクトの組合せを検索する場合
大量のワークロードおよび演算子が含まれる空間索引については、現在、テスト中です。
これ以降の項では、Rツリー索引に関連する概念およびオプションについて説明します。
空間Rツリー索引では、最大4次元の空間データの索引付けが可能です。Rツリー索引は、図1-3に示すとおり、ジオメトリを囲む最小の矩形(最小境界矩形(MBR))によって各ジオメトリを近似させます。
ジオメトリのレイヤーでは、Rツリー索引は、図1-4に示すとおり、レイヤー内のジオメトリのMBRに対する階層索引で構成されています。
次に、図1-4について説明します。
1 から9 は、レイヤー内のジオメトリです。
a、b、c およびd は、Rツリー索引のリーフ・ノードで、ジオメトリへのポインタとともにジオメトリの最小境界矩形を含みます。たとえば、a にはジオメトリ1 および2 のMBRが含まれ、b にはジオメトリ3 および4 のMBRが含まれます。
A にはa およびb のMBRが含まれ、B にはc およびd のMBRが含まれます。
ルートには、A およびB のMBR(図に示す領域全体)が含まれます。
このRツリー索引は、空間索引表(「空間索引に関する構造」に示すUSER_SDO_INDEX_METADATAビューのSDO_INDEX_TABLE)に格納されます。また、Rツリー索引は、順序オブジェクト(USER_SDO_INDEX_METADATAビューのSDO_RTREE_SEQ_NAME)の管理も行い、索引に対する同時ユーザーによる同時更新が可能になります。
Rツリー索引に影響する挿入および削除操作を何度も行うと、Rツリー構造の品質が低下し、これによって問合せのパフォーマンスが低下する場合があります。
Rツリーは、ツリーの異なる高さにノードを持つ階層ツリー構造です。問合せでのRツリー索引構造のパフォーマンスは、Rツリーの索引ノードの面積および周囲の長さに比例します。たとえば、レベル0 (ゼロ)の覆われた領域は、データ・ジオメトリの最小境界矩形が占める領域を表し、レベル1の領域は、リーフ・レベルのRツリー・ノードで覆われた領域を示します。ルート(最上位レベル)の領域とレベル0 (ゼロ)の領域の元の比率は、表の更新に基づいて時間の経過に応じて変化する可能性があります。その比率が悪化した(大幅に増えた)場合、索引を再作成すると問合せのパフォーマンスが向上する場合があります。
ジオメトリに影響を及ぼす多くの挿入、更新または削除操作を実行した際にSDO_FILTER操作のパフォーマンスが低下した場合、関連付けられたRツリー索引の品質の低下が原因である場合があります。
Rツリー索引を再作成するには、ALTER INDEX REBUILD文(「空間データを索引付けするためのSQL文」を参照)を使用します。