緯度と経度が関連付けられたユーザーのリストを格納できるMySQLスキーマを設計しようとしています。
次に、特定のユーザーについて、最も近い50人のユーザーをそのユーザーに返し、それらのユーザーを距離で並べ替えることができるクエリを作成します(最も近いユーザーが最初に表示されます)。
このテーブルには何千人ものユーザーがいる可能性があることを考えると、このデータを保存およびクエリするための最も効率的な方法は何ですか?
緯度と経度が関連付けられたユーザーのリストを格納できるMySQLスキーマを設計しようとしています。
次に、特定のユーザーについて、最も近い50人のユーザーをそのユーザーに返し、それらのユーザーを距離で並べ替えることができるクエリを作成します(最も近いユーザーが最初に表示されます)。
このテーブルには何千人ものユーザーがいる可能性があることを考えると、このデータを保存およびクエリするための最も効率的な方法は何ですか?
この記事を読んでみてください: PHP、MySQL、Google マップを使用した店舗検索の作成この記事では、 Haversine 式の MySQL ソリューションを示しています。これは、与えられた緯度と経度から距離を計算する最良の方法です。
MySql の空間インデックスを見てみましょう。
また、 Great Circle Distanceを使用することもできます。これに関する優れた SO 記事がここにあります。