現在、現在地の経度と緯度に基づいて、データテーブル内の 2 キロメートル付近の 5 つの場所をクエリしたい。クエリ結果に 5 つの場所が含まれていない場合は、近隣の範囲を拡大したい。 5 つの場所が見つかるまで。私は 2 つの選択肢を考えました:
最初のオプションは、SQL ステートメントを使用して完全に実装することです。SQL ステートメントを使用して完全に実装する場合、この SQL の書き方がわかりません。
2 番目のオプションは、最初にクエリを実行し、次に 5 つの場所が満たされない場合は、近くの範囲を拡大して、5 つの場所が見つかるまでデータベースで再度クエリを実行します。2 つのオプションのどちらがより効率的かわかりません。アドバイスをお願いします。ありがたい。
返信内容:
最初のオプションは、SQL ステートメントを使用して完全に実装することです。SQL ステートメントを使用して完全に実装する場合、この SQL の書き方がわかりません。
2 番目のオプションは、最初にクエリを実行し、次に 5 つの場所が満たされない場合は、近くの範囲を拡大して、5 つの場所が見つかるまでデータベースで再度クエリを実行します。
2 つのオプションのどちらがより効率的かわかりません。アドバイスをお願いします。ありがたい。
あなたの2つの選択肢がまったく理解できません。
まずロジックを単純化できませんか?
あなたのリクエストは次のようなものではありません: 最も近い 5 つの場所をクエリします。 なぜ2キロ以内と2キロ離れたところを区別する必要があるのでしょうか。
最新の 5 つのポイントをクエリする場合、ビジネス上の判断を考慮する必要があるのは、単なる制限 SQL ステートメントではないでしょうか?
2 番目のオプションは、SQL を使用して完全に実装されます。効率を高めるには、データ層とビジネス層を別々に実行する必要があります。
Amap LBS Cloud が必要です。Amap LBS クラウドがあなたのニーズにお応えします
mysql空間座標データベースを試してください
リーリー リーリー並べ替えたい場合は、距離を並べ替えることができます。
GEOHASH を使用して 2D 座標を文字列に変換し、それらを比較する必要があります