空間インデックスと ST_Geometry
ST_Geometry で使用される空間インデックスの実装方法は、どの DBMS を使用するかによって異なります。IBM Informix Spatial DataBlade モジュールと PostgreSQL の ST_Geometry 実装では、R-tree インデックスを使用して空間データにインデックスを付けます。Oracle と DB2 の ST_Geometry では空間グリッド インデックスが使用されます。
空間インデックスは何種類かの方法で作成することができます。
- グリッド インデックスの場合、ArcCatalog の [フィーチャクラス プロパティ] ダイアログ ボックスの [インデックス] タブで [追加] をクリックします。「空間インデックスの設定」をご参照ください。
- sdelayer 管理コマンド ユーティリティを使用します。『ArcSDE コマンド リファレンス』をご参照ください。
- SQL を使用します。「ST_Geometry 列を持つテーブルでの空間インデックスの作成」をご参照ください。
- ArcSDE C または Java アプリケーション プログラミング インタフェース(API)を使用します。「ジオデータベース Resource Center」をご参照ください。
- sdelayer コマンドの load_only_io 操作と normal_io 操作を使用して、フィーチャクラスを LOAD_ONLY_IO モードから NORMAL_IO モードに戻します。ArcSDE は、フィーチャクラスの LOAD_ONLY_IO モードと NORMAL_IO モードが切り替えられるたびに、ArcSDE は作成された空間インデックスを自動的に削除して再作成します。
ST_Geometry 列を含むテーブルに対して空間リレーションシップ クエリを発行する場合は、特定の空間リレーションシップ関数を実行する際に、クエリ処理を高速化するために空間インデックスが利用されます。 これらの関数は「空間インデックスを使用する場合」に記載されています。
Oracle
ST_Geometry 格納で作成されるフィーチャクラスは、Oracle データベース内に追加テーブルを追加します。この空間インデックス テーブルには、S<n>_IDX$ という名前が付けられます。<n> は、空間インデックス テーブルのジオメトリ インデックスの値です。この値は、SDE.ST_GEOMETRY_COLUMNS テーブルにクエリを実行することによって取得されます。空間インデックス テーブルは、Oracle の索引構成表(IOT)として作成されます。ST_Geometry 属性の空間インデックスは、Enterprise Manager で表示した場合、A<n>_IX1 として表示されます。値 <n> は、LAYERS テーブルに格納された LAYER_ID 値を表します。
S<n>_IDX$ テーブルには S<n>$_IX1 と S<n>$_IX2 という 2 つの追加のインデックスが作成されます。フィーチャクラスを作成するときに指定する DBTUNE コンフィグレーション キーワードの S_STORAGE パラメータを変更することで、DBMS へのこれらのインデックスの格納方法を指定できます。
ST_Geometry 列を含むパーティション化ビジネス テーブルを作成する場合は、空間インデックスもパーティション化してください。パーティション化には、グローバルとローカルの 2 種類があります。デフォルトでパーティション化ビジネス テーブルに作成されるのは、グローバル パーティション インデックスです。ローカル パーティション インデックスを作成する場合は、CREATE INDEX ステートメントの末尾にキーワード LOCAL を追加します。ArcGIS で、空間インデックスの CREATE INDEX ステートメントの末尾に LOCAL を追加できるようにするには、DEFAULTS キーワードでパラメータ ST_INDEX_PARTITION_LOCAL を TRUE に設定します。
PostgreSQL
PostgreSQL の場合、R ツリー インデックスは、GiST(Generalized Search Tree )インデックス インフラストラクチャで実装されます。GiST インデックスについては、PostgreSQL 8.3 のドキュメントの第 51 章をご参照ください。
IBM DB2 と Informix
DB2 の空間インデックスについては、「DB2 Spatial Extender による空間インデックスの作成」をご参照ください。Informix の空間インデックスについては、「Informix のジオデータベースの空間インデックス」をご参照ください。