このトピックで説明するガイドラインは、Oracle および DB2 において、空間グリッド インデックスのサイズを手動で計算する必要がある場合に、空間検索のパフォーマンスの向上に役立ちます。
グリッド セルのサイズは空間インデックス テーブルのサイズに影響を与えます。空間インデックスの設定とは、セル サイズのバランスをとることです。セル サイズが小さくなるのに従ってシェープあたりのセルの数が増え、空間インデックス テーブルの必要なエントリの数が増えることになります。
サードパーティのクライアント アプリケーションを使用している場合、アプリケーションと空間データの設計はシステムごとに大きく異なることがあります。そのような場合は、空間インデックスをセル サイズとグリッド レベルが異なるさまざまな設定で試す必要があります。
- データベース オプティマイザーがグリッド レベルごとに空間インデックス テーブルをスキャンすることに注意して、必要なグリッド レベル数について検討します。多くのグリッド レベルにジオメトリを均一に分散させると、空間インデックスのエントリが最小限に抑えられますが、ほとんどの場合、フィーチャクラスには単一のグリッド レベルが最適です。
- ポイント タイプのフィーチャにはグリッド レベルを 1 つ使用し、セル サイズを大きくすることを検討します。一般に、ポイント ジオメトリの空間検索の処理は、他のジオメトリ タイプよりも高速です。
- 空間インデックスを監視します。データが頻繁に変化する場合、空間インデックスの調整は困難です。空間データの構造に応じて調整を行います。空間データの変化に応じて、定期的に空間インデックスを評価します。
- アプリケーションが表示する範囲を空間インデックス サイズのベースにします。空間インデックスのグリッド セル サイズをアプリケーション ウィンドウの範囲と一致させます。そうすると、アプリケーションは多くの場合、空間インデックス テーブルのエントリをそのまま参照します。これにより、フィーチャ テーブルに対して評価しなければならない候補フィーチャ ID の数が少なくなるので、空間インデックス テーブルのサイズを適切に設定し、処理の負荷を減らすのに役立ちます。
- アプリケーション ウィンドウが不明である、またはばらつきがある場合は、グリッド レベルを 1 つ定義し、セル サイズを平均的なフィーチャ範囲サイズの 3 倍にしてみます。平均的なフィーチャ サイズを取得するには、ビジネス テーブルを検索します。次の SQL ステートメントは、Oracle でのフィーチャ サービスの平均的なフィーチャ サイズを取得します: (ここで <N> は空間テーブルで、shape は <N> テーブルのジオメトリ列です)。このような空間インデックスの構成方法では、大半のフィーチャを 1 つか 2 つのグリッド セルで参照できるので、空間インデックス テーブルの行の数が最小限に抑えられると同時に、インデックスの効果が維持されます。
SELECT (AVG(SDE.ST_MAXX(shape) SDE.ST_MINX(shape)) + AVG(SDE.ST_MAXY(shape) SDE.ST_MINY(shape))) / 2 from <N>;
- タイプ、ジオメトリのサイズ、分散状況などの空間データの種類に基づいて、空間テーブルを設計します。場合によっては、これらの種類に基づいて慎重にフィーチャクラスを構成すると、空間検索のパフォーマンスが飛躍的に向上することがあります。
ArcGIS Desktop 経由でデータを作成した場合、空間グリッド インデックスは自動的に計算されます。
DB2 Spatial Extender のグリッド インデックスの詳細については、『IBM DB2 Spatial Extender and Geodetic Extender User's Guide and Reference』をご参照ください。