mysql查找附近算法_跟据经纬度实现附近搜索及按距离排序

《跟据经纬度实现附近搜索》网上有很多资料,mysql空间数据库、矩形算法、geohash等,当数据上了百万之后mysql空间数据库方法是最强最精确的(查询前100条数据只需5秒左右)。接下来推出一个计算方法,查询速度是mysql空间数据库算法的2倍$lng是你的经度,$lat是你的纬度SELECT lng,lat,(POWER(MOD(ABS(lng - $lng),360),2) + POWER...
摘要由CSDN通过智能技术生成

《跟据经纬度实现附近搜索》

网上有很多资料,mysql空间数据库、矩形算法、geohash等,当数据上了百万之后mysql空间数据库方法是最强最精确的(查询前100条数据只需5秒左右)。

接下来推出一个计算方法,查询速度是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只是一个系数,而非两点间距离,只用在排序。

以下查询语句可以约等于单位米m(去掉*1000则可约等于单位千米km):

SELECT lng,lat,

(SQRT(POWER(MOD(ABS(lng - {$lng}),360),2) + POWER(ABS(lat - {$lat}),2))*80*1000) AS distance

FROM `user_location`

ORDER BY distance LIMIT 100

####################################

另外的几种算法还是在这里展示一下:

一、距形算法

define(EARTH_RADIUS, 6371);//地球半径,平均半径为6371km

/**

*计算某个经纬度的周围某段距离的正方形的四个点

*<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值