1

地理データを含む SQLite データベースがあります。私のテーブルは次のように定義されています:

     CREATE TABLE GEO_OBJECTS (ID VARCHAR(30) PRIMARY KEY     NOT NULL,
                LATITUDE       NUMERIC(6,3)      NOT NULL,  
                LONGITUDE      NUMERIC(6,3)      NOT NULL)  

次に、私のソフトウェア (Java) は、次のような単純な SQL 要求を使用して GEO_OBJECTS を探します。

SELECT * FROM GEO_OBJECTS WHERE 緯度 <= 123.4 AND 緯度 >= 26.32 AND 経度 <= 12.41 AND 経度 >= 6.23;

緯度と経度のINDEXを作成するとパフォーマンスが向上しますか?

次に、このクエリの結果を取得したら、harsine 式を使用して大円距離内のオブジェクトを見つけます。

4

1 に答える 1

2

通常のインデックスは、一部の 1 次元間隔クエリに役立つ場合がありますが、2 つ以上の次元では、R ツリーなど、そのようなクエリ用に設計されたインデックスが必要です。

SQLite にはR ツリー モジュールがありますが、DB ドライバーにコンパイルされていない可能性があります。

SpatiaLiteは SQLite から派生し、多くの便利な機能 (大圏距離の計算など) を備えています。

于 2013-07-25T07:32:00.743 に答える