select * from DjCity
where
`open` = 0
AND lat > 34.75661006414-1
and lat < 34.75661006414+1
and lng > 113.64964384986-1
and lng < 113.64964384986+1
order by ACOS(SIN((34.75661006414 * 3.1415) / 180 )
*SIN((lat * 3.1415) / 180 ) +COS((34.75661006414 * 3.1415) / 180 )
* COS((lat * 3.1415) / 180 ) *COS((113.64964384986* 3.1415) / 180 -
(lng * 3.1415) / 180 ) ) * 6380 asc limit 3
备注:
只对于经度和纬度大于或小于该用户1度(111公里)范围内的用户进行距离计算,同时对数据表中的经度和纬度两个列增加了索引来优化where语句执行时的速度.