0

MySQL データベースに列を持つテーブルを作成したい:

  1. 索引
  2. 緯度
  3. 経度
  4. 国、都市、人、建物などの場所。

数十万行から数百万行の膨大な数の行があります。

テーブルで選択した行の最も近い場所を取得したい場合、どのようにすれば最速で取得できますか?

より多くの情報、インデックス作成、または事前の並べ替えが必要な場合でも問題ありません。

======
編集 1:
回答を読みましたが、回答は数式を使用しています。たとえば、最良の回答から:
(((acos(sin((".$latitude."*pi()/180)) ) * sin(( geo_latitude*pi()/180))+cos((".latitude."*pi()/180)) * cos(( geo_latitude*pi()/180)) * cos(((".$経度."- geo_longitude)*pi()/180))))*180/pi())*60*1.1515*1.609344)

100 万行ある場合は、100 万の高価な計算があることを意味します。とても遅くなると思います。

たとえば、最初にフィルタリングを使用した最適化は
次のとおりです。
2. 上記の式で計算します。

そのアルゴリズムの速度を最適化する方法は?

====
編集 2:
申し訳ありませんが、最良の回答しか読んでいません。
他の回答で探していたものを見つけました: http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL

4

1 に答える 1