我需要做一些数据库管理。
我有一个数据库表,其中包含位置(包含纬度和经度等)。它被用来生成Geofences(如果你感兴趣的话)。
作为内务管理的一部分,我想从数据库中删除“接近”其他记录的位置记录(即如果表中的2条记录彼此相距250米,我将删除创建的第一条记录并离开第二个)。
我实现这个的算法是循环遍历每个记录(我将其称为根记录),并通过表中的每个其他记录循环每个根记录循环(我将其称为检查记录),计算两个位置之间的距离,如果< 250,则删除根记录。
[这是伪代码]
while (rootLoop.moveToNext) {
while (checkLoop.moveToNext) {
distance = getDistanceBetween(rootLocation, checkLocation);
if (distance < 250) delete(rootRecord);
}
}
如果我有一个包含几百个位置的数据库表,这可能需要一些处理工作(我显然会在后台服务中运行它)。
所以我的问题是 - 有没有比这些嵌套循环更有效的方法来实现我想要的东西?
如果有的话,我想不到它,但我想我会把它扔到地板上。你有多有创意?