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