2

近くにある 20 の最寄りのビジネスを見つけたいとします。後者は、次の 20 を最も近くで見たいなどです。はい、myisam があります。ポイントに空間インデックスがあります。送信する必要がある実際の SQL コマンドを探しています。

明確にするために:

ノート:

  1. mysql myisam空間インデックスを使用しています。私はグーグルを前後にサーフィンしましたが、正確な必要性について何も見つかりませんでした.
  2. テーブル全体の距離を計算したくありません (非効率的です)。空間インデックスの全体的なポイントは、少なくとも多くのポイントを効率的に取り除くことができるということです。左と上のいくつかのポイントが資格を持たない場合、そのポイントの左と上のすべてのポイントも資格を失います。
  3. まだ非効率な領域の距離を計算したくありません。私の関心のある地域は 10 km で、そこには 65,000 の企業があります。
  4. ポイントを距離でソートし、ポイント1-20、21-40、41-60などを表示できるようにしたいので、妥当な数のポイントの距離を計算することは気にしません.
  5. postgis http://blog.opengeo.org/2011/09/28/indexed-nearest-neighbour-search-in-postgis/でこれを行う方法を見つけました。
  6. サンプルまたは実際のサンプル SQL コマンドとして実際の SQL コードを含む Web サイトが必要です。ですから、「空間を使用してください」とだけ言わないでください。当たり前。知っている。実際の sql コマンドが必要です。
  7. 最初に小さな領域を検索するという複雑なループを実行したくありません。これを mysql エンジンによって効率的に実行される 1 つのストロークで行う sql コマンドが必要です。
  8. デカルト距離は問題ありません。お客様が北極または南極にいる場合を除き、私たちが地球に住んでいることを知る必要はありません。

160万ビズあります。もちろん、それらすべての距離を計算して並べ替えるのはばかげています。

それが地理空間インデックスの出番ですよね?

では、どの SQL コマンドを送信すればよいのでしょうか?

4

1 に答える 1

2

私はあなたの質問にコメントすることができないので、私はこれを答えとして残さなければならないだろうと思います。

この質問を見てください:

https://gis.stackexchange.com/questions/22082/how-can-i-use-r-tree-to-find-points-within-a-distance-in-spatialite

ドキュメントを少し見てみると、MyIsamが提供する関数にはそれを行うための良い方法がないようです。

于 2012-06-21T05:53:13.360 に答える