1

位置データ用の SQLite データベースを作成しています。約 1,000 万行あり、できるだけ早く SELECT ステートメントを取得したいと考えています。

データベースを公開する必要があるのは 1 回だけで、作成フェーズにかかる時間は気にしません。

ユーザーは一度にマップの一部しか見ないため、地理的に互いに近いデータには同時にアクセスする必要があります。

データを複数のタイルに分割しました。各タイルは、開いているストリート マップ タイルに基づく緯度と経度の地域に対応します。

私の質問は、ルックアップ時間を最速にするために、次のことを行う必要があります。

  1. 複数のデータベース、タイルごとに 1 つのデータベース、または
  2. 複数のテーブルを含む 1 つのデータベース、タイルごとに 1 つのテーブル、または
  3. データを分割しても検索は速くならないため、テーブルが 1 つだけの大きなデータベースを 1 つ用意します。

それぞれの方法を試すこともできますが、解決策を本当に理解したいと思います。

4

1 に答える 1

3

複数のデータベースまたは複数のテーブルがある場合、実際の検索クエリを実行する前に、コードで検索するデータベースを見つける必要があります。さらに、検索ウィンドウが 2 つのタイルに重なっている場合は、2 つの検索を実行して結果をマージする必要があります。さらに、分割は 1 つのタイル内の検索には役立ちません。

地理的な検索を行うには、 R-tree のような 2 次元インデックスを使用する必要があります。その場合、検索はデータの適切な部分に自動的に制限されるため、1 つのテーブルを使用するのが最も簡単で高速です。

于 2012-11-22T09:05:53.827 に答える