我正在开发一个应用程序,该程序应显示与某个位置特定距离内的地址。我知道如何找到两点之间的距离,但问题是在性能方面不确定最佳方法是什么。
一种方法是在后端检查所有地址并逐个与所选地址进行比较,但是否有任何方法可以最小化从数据库中检索的项数,而不是使用内存?哪种方法最好,如何实现?
假设我有300,000条记录,我是否必须检索它们全部并计算它们到所选点的距离?正如詹姆斯提出的,我可以将记录放在不同的区域,并计算距离,那么使用查询还是Java计算距离,哪种方法更好?
public class Address{
long Id;
Double latitude;
Double longitude;
..
}
public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
double earthRadius = 3958.75;
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double sindLat = Math.sin(dLat / 2);
double sindLng = Math.sin(dLng / 2);
double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
* Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dist = earthRadius * c;
return dist;
}
这个问题 和 这个问题 提供了通过 mysql 计算距离的方法,但是哪种方式更好,Java 还是 mysql,我感到很困惑。