我正在尝试设计一个MySQL模式,该模式可以存储具有相关纬度和经度的用户列表。
然后,对于给定的用户,我想建立一个查询,该查询可以将最近的50个用户返回给他/她,并按距离对这些用户进行排序(最近的用户首先显示)。
鉴于此表中可能有数千名用户,存储和查询此数据的最有效方法是什么?
答案 0 :(得分:5)
尝试阅读本文:Creating a Store Locator with PHP, MySQL & Google Maps该文章展示了Haversine formula的MySQL解决方案,这是计算纬度和经度距离的最佳方法。
答案 1 :(得分:4)
看一下MySql的spatial indexing。
您也可以使用Great Circle Distance,其中有一篇很好的SO文章here。