最好与客户端中服务器VS中的两组坐标保持距离



我有一个带有〜3000记录的数据库,每个数据库都有一个名为坐标的字段,其中坐标为字符串,以逗号分隔,例如:

coordinates: -32.23192381,51.32238190

,然后我还有其他一些坐标:

coordinates2: -32.21093841,52.99193764

所以算法应该:

1)将字符串分为两个部分:latitudelongitude
2)使用这样的函数获取距离:

function getDistance(lat1, lng1, lat2, lng2){
  radius = 6371
  dLat = deg2rad(lat2-lat1)
  dLng = deg2rad(lng2-lng1)
  a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2) 
  c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a))
  return radius * c
}
function deg2rad(deg){
  return deg * (PI/180)
}

3)返回带有距离小于10公里的记录的数组。


我正在为服务器使用PHP,而JS则用于客户端,那么什么将更快:

1)将记录从DB作为JSON传递到JavaScript,然后为每个记录运行算法。

2)使用PHP执行此操作,仅通过记录小于10km的最终数组。

哪个会更快?

另外,这太慢了吗?我将永远不会有3000多个记录,但在我看来,这会很慢。你怎么看?

在mysql

上进行查询

对于在DB中的3000个记录也没有记录,即使您没有索引,它仍然会很快

最新更新