ユーザーが緯度/経度と半径を指定できるようにするクエリを実行する方法を知っている人はいますか?次に、緯度経度 + 半径を持つ非常に大量の場所を検索し、重複があるかどうかを確認します。次に、距離によるソートを許可しますか?
企業が事業を展開している郊外の地図にマーカーを配置し、半径を指定できるようにするよう求められていますが、これを実行するクエリを Google で見つけることができません。
私は現在、仕事をする次のクエリを使用しています。
(SELECT ( 6371.01 * acos( cos( radians( $lat ) ) * cos( radians( location.lat ) )
cos( radians( location.lng ) - radians( $lng ) )
sin( radians( $lat ) ) * sin( radians( location.lat ) ) ) ) AS distance
FROM location
HAVING distance <= $radius
ORDER BY distance ASC) as distance
しかし明らかに、これは場所が半径を持つことを許可しません。
この質問の 2 番目の部分です。この検索クエリはすでに非常に大きなクエリの一部です。これを最適化するための推奨事項はありますか? 上記のようなクエリの例をグーグルで検索するたびに、このクエリがどれほど高価であるかについて警告する人が常にいました。現時点で考えられる唯一の解決策は、別の検索サーバーを用意することです。