在网上查了很多资料,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