空間インデックスの基礎


8

アプリケーションがそれらのサブセットのみをマップに表示し、テーブル全体をマップしない場合に、テーブルのサブセットに空間インデックスを作成することは良いアイデアであるかどうかフォーラムに尋ねていました。

サブセットにはテーブル全体の同じ範囲がないため、独自の空間インデックスを使用してサブセットを表示する方が高速になる可能性があるためです。

私が受け取った答えは、空間インデックスは表示時間に影響を与えず、結合や交差などの空間クエリにのみ使用されるというものでした。それは本当ですか??? GISとデータベースの私の経験は、テーブルに空間インデックスがない場合、マップでの表示がはるかに遅くなることです。ディスプレイでは、現在のマップウィンドウの範囲と交差するフィーチャを表示するためにテーブルにクエリが実行されるため、外部のフィーチャは何も読み込まれません。それは本当にそれがどのように機能するのですか?これは一種の空間クエリです。

真実は何?サブセットに空間インデックスを作成することは良い考えですか?

回答:


13

表示目的では、常に空間インデックスを使用するのが適切です。レンダリングと空間クエリの両方の速度が向上します。ただし、大量のオブジェクトを更新する場合は、更新中に空間インデックスを削除することをお勧めします。そうしないと、更新のたびに空間インデックスも更新する必要があるため、更新プロセスが大幅に遅くなります。更新後、空間インデックスを再度追加できます。


マークのコメントに追加するには、ESRIシェイプファイルが空間インデックスなしで作成されることが多く、追加するとArcMapでの表示が大幅に改善されます。データがパーソナルジオデータベースまたはファイルジオデータベースにある場合、これらは自動的に空間インデックスを持ちます。どうしてわかりますか?ArcMapでは、テーブルモードでデータを表示すると、Shapeフィールドの横に小さな星が表示されます。
Hornbydd 2013年

5

大規模なデータベースまたは変更の可能性があるデータベースでは、空間インデックスを配置して定期的に更新することが非常に重要になる場合があります。

(ここではシンプルにしてください)

たとえば、Oracle SpatialのOracleデータベースエンジンへのインデックス機能は、Spatial製品の主要な機能です。空間インデックスは、他のインデックスと同様に、検索を制限するメカニズムを提供しますが、この場合、交差や包含などの空間基準に基づいています。空間インデックスは次の場合に必要です。

  • 特定のポイントまたは関心領域と重なるインデックス付きデータスペース内のオブジェクトを検索する(ウィンドウクエリ)
  • 空間的に相互に作用する2つのインデックス付きデータスペース内からオブジェクトのペアを検索します(空間結合)

Oracle 11.2gでの空間インデックス

http://docs.oracle.com/cd/E11882_01/appdev.112/e11830/sdo_index_query.htm


+1 SQL Serverのディスカッションについては、基本的なマルチレベルグリッドに関する Isaac Kunenのブログ投稿を参照してください。
カークカイケンダル2013年

ただし、大量の編集を行っている場合は、空間インデックスによってアクセス速度が低下する可能性があります。つまり、編集するたびに、dbaseがインデックスを再計算している場合、パフォーマンスに大きな影響を与える可能性があります。使用率の高い環境での更新のタイミングは重要です。
Jay Laura

1
ジェイは、データベースがトランザクション(クイック読み取り/書き込み)のセットアップやデータウェアハウスである(データ長いロードとデータ読み取り専用)場合によって異なりss64.com/ora/syntax-architecture.html
Mapperz
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.