MySQL データベースに列を持つテーブルを作成したい:
- 索引
- 緯度
- 経度
- 国、都市、人、建物などの場所。
数十万行から数百万行の膨大な数の行があります。
テーブルで選択した行の最も近い場所を取得したい場合、どのようにすれば最速で取得できますか?
より多くの情報、インデックス作成、または事前の並べ替えが必要な場合でも問題ありません。
======
編集 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