我有一个大的Oracle数据库(720,000条记录aprox),其中每条记录都有自己的地理坐标(lat& lng),我只需要选择距离某一点(特定半径内)特定距离的记录.
目前我已经实现了在oracle论坛中找到的距离函数(基于hasrsine),但由于数据库有点大,每次选择花费大约50秒.
关于如何有效地做任何建议?我知道有一个名为oracle spatial& amp;定位器,但我不知道我是否可以购买它甚至它是如何工作的.非常感谢提前.最好的祝福
解决方法
使用更好的算法.不需要计算需要平方根计算的实际欧几里德距离,而是选择仅需要减法和加法的线性距离.即如果您的点位于(10,10)且半径为5,则选择由(10 / – 5,10 / – 5)形成的正方形内的点的所有位置.
这将在广场的角落捕获少量误报.通过计算适当的欧几里德距离,仔细检查应用程序中的结果来消除这些.