ST_Geometry で使用される空間インデックスの実装方法は、どのデータベース管理システムを使用するかによって異なります。Oracle と Db2 の ST_Geometry では空間グリッド インデックスが使用されます。IBM Informix Spatial DataBlade モジュール、PostgreSQL の ST_Geometry 実装、および SQLite では、R-tree インデックスを使用して空間データにインデックスを付けます。SQLite では、R-tree インデックスは仮想テーブルです。
空間インデックスは次の方法で作成することができます。
- グリッド インデックスの場合、ArcCatalog の [フィーチャクラス プロパティ] ダイアログ ボックスの [インデックス] タブで [追加] をクリックします。「空間インデックスの再構築」をご参照ください。
- SQL を使用します。
ST_Geometry 列を含むテーブルに対して空間リレーションシップ クエリを発行すると、特定の空間リレーションシップ関数を実行する際にのみ、空間インデックスが使用されクエリ処理が高速化されることに注意してください。その関数については「空間インデックスが使用される場合」をご参照ください。
Oracle
ST_Geometry 格納で作成されるフィーチャクラスは、Oracle データベース内に追加テーブルを作成します。この空間インデックス テーブルには、S<n>_IDX$ という名前が付けられます。<n> は、空間インデックス テーブルのジオメトリ インデックスの値です。この値は、SDE.ST_GEOMETRY_COLUMNS ジオデータベース システム テーブルにクエリを実行することによって取得されます。空間インデックス テーブルは、Oracle の索引構成表 (IOT) として作成されます。ST_Geometry 属性の空間インデックスは、Oracle 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 のドキュメントをご参照ください。
SQLite
SQLite の空間インデックスは、R-tree インデックスとして使用されるテーブル セットです。
IBM Db2 と Informix
Db2 および Informix の空間インデックスについては、IBM のドキュメントをご参照ください。