GPS 位置のデータベースを保存し、特定の半径内のポイントと最も近いポイントを見つけるクエリを実行しようとしています。私はmysqlを使用しており、空間拡張を見てきました。位置半径クエリで探していることを実際に空間拡張を使用して行う方法がわかるかどうかはわかりません。
だからここに私のオプションについて考えていることがあります:
緯度と経度の gps 座標を浮動インデックス変数として db に保存します。ポイントの gps 座標と範囲を取得したら、緯度と経度の最大値と最小値を計算してクエリを実行し、これらの距離関数に基づいて並べ替えて並べ替えます。
空間拡張を使用します。私はこれがうまくいくと確信しているわけではありません。Distance() 関数は実装されていません。空間インデックスを使用するには、境界ボックスを見つけて (実行可能)、MBRContains 境界ボックス関数を呼び出して、この境界ボックス内にあるポイントを見つける必要があります。ただし、ポイントにはゼロの境界があるため、MBRContains 関数はポイントに対して機能しません。
これを行うための標準的な方法が何であるかはわかりませんが(存在しないようです)、経験/考え/決定の助けの言葉をいただければ幸いです。私は現在mysql 5.13を使用していますが、5.5でも距離メトリックがないことを確信しています。
また、2.が機能する場合でも、どちらが高速になりますか? あなたの考えを教えてください。特に、迅速かつ大規模な検索で何かが機能することを確信している/見たことがある場合は特にそうです!
Mysql 空間インデックス: http://dev.mysql.com/doc/refman/5.5/en/using-a-spatial-index.html