IBM Db2 Spatial Extender は、アプリケーションが空間列に含まれている 2 次元の地理データを検索し、特定の範囲内にあるすべてのジオメトリをすばやく特定できるようにするための、3 層グリッド空間インデックスを提供します。
2 次元の空間インデックスは、Db2 で提供される従来の階層型の B ツリー インデックスとは異なります。空間列に 2 次元の特性を持たせるには空間インデックスの構造が必要なので、B ツリー インデックスを空間列に適用することはできません。同じ理由から、空間インデックスを非空間列に適用することもできません。また、空間インデックスを何らかのコンポジット列に適用することもできません。
このため、空間インデックスの CREATE INDEX ステートメントに USING 句を追加して、Db2 に B ツリー インデックスではなく Spatial Extender の空間インデックスを使用させる必要があります。完全な構文は次のとおりです。
CREATE INDEX <index_name>
ON <table> (<spatial column>)
USING db2gse.spatial_index (<grid level 1>, [grid level 2], [grid level 3])
USING 句を追加すると、空間インデックスと B ツリー インデックスが区別されます。このステートメントに現在の関数パスが反映されないよう、db2gse スキーマ名で spatial_index エクステンション名を修飾する必要があります。
B ツリー インデックスを使用するデータは本質的に単純なので、データベース設計者は Db2 のテーブルの列にインデックスを 1 つ以上作成して管理します。これに対し、空間データは複雑なので、データベース設計者はその相対的なサイズ分布を理解する必要があります。データベース設計者は、空間インデックスの最適なサイズとグリッド レベルの数を決定しなければなりません。
グリッド レベル ([グリッド レベル 1]、[グリッド レベル 2]、[グリッド レベル 3]) を入力するには、セルのサイズを増やします。したがって、レベル 2 のサイズはレベル 1 のサイズよりも大きくなければならず、レベル 3 のサイズはレベル 2 のサイズよりも大きくなければなりません。レベル 1 のグリッド セルは必須ですが、レベル 2 とレベル 3 のグリッド セルは 0 の値を指定して無効にすることができます。
空間インデックスの詳細については、IBM Knowledge Center で Db2 のドキュメントをご参照ください。