3

ジオローカライズされたオブジェクトのデータベースがあります。

  • id
  • 緯度
  • 経度

ボックス内にあるオブジェクトをフェッチするようにデータベースにクエリを実行しています。

WHERE longitude >= - 33.83789
  AND longitude <= 33.837891
  AND latitude >= 4.214943
  AND latitude <= 40.979898

に1つのインデックスがあります:latitude, longitude

データベースを保存/クエリするより効率的な方法はありますか?現在、ボックスの座標/オブジェクトの密度に応じて、クエリ時間は0.1秒から1秒以上まで変化します。

MySQL Spacial拡張機能については知っていますが、使用するのは少し手間がかかるようで、それがより簡単で効率的かどうかはわかりません。

追加情報:将来的には、単純な距離ベースのクエリ(指定された場所の近くのオブジェクトをフェッチする)を実行することも計画しています。

4

1 に答える 1

2

データベースを保存/クエリするより効率的な方法はありますか?

絶対にそうです!空間拡張は、この問題を解決するために正確に設計されています。

MySQL Spacial拡張機能については知っていますが、使用するのは少し手間がかかるようで、それがより簡単で効率的かどうかはわかりません。

それは簡単ではなく(しかしそれほど難しくはありません)、より効率的です。大規模なデータセットの場合、はるかに効率的です。

于 2012-08-31T22:15:42.170 に答える