关于附近的人算法,求解惑

MySql 码拜 6年前 (2015-10-01) 702次浏览

在做附近的人,找了一些算法,发现一个貌似挺厉害的,是这么说的
接下来推出一个原创计算方法,查询速度是mysql空间数据库算法的2倍

$lng是你的经度,$lat是你的纬度

SELECT lng,lat,
        (POWER(MOD(ABS(lng – $lng),360),2) + POWER(ABS(lat – $lat),2)) AS distance 
        FROM `user_location`
        ORDER BY distance LIMIT 100

经测试,在100万数据中取前100条数据只需2.5秒左右。
***

我也试了试,确实可以,但是就是不理解这是什么算法,以及算出来的distance 是个什么东西,求精通这方面的高手能指点

方案推荐指数:35
POWER(X,Y)
返回X的Y次幂ABS(X)
取绝对值

MOD(N,M)
返回N除以M后的余数

POWER(MOD(ABS(lng – $lng),360),2) + POWER(ABS(lat – $lat),2)

其实就是一个三角函数。
计算出了两点之间的距离的平方。

方案推荐指数:5
直角三角形 
c平方 = a平方 + b平方

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于附近的人算法,求解惑
喜欢 (0)
[1034331897@qq.com]
分享 (0)