我有一个带有〜3000记录的数据库,每个数据库都有一个名为坐标的字段,其中坐标为字符串,以逗号分隔,例如:
coordinates: -32.23192381,51.32238190
,然后我还有其他一些坐标:
coordinates2: -32.21093841,52.99193764
所以算法应该:
1)将字符串分为两个部分:latitude
和longitude
。
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个记录也没有记录,即使您没有索引,它仍然会很快