查找和订购MySQL中具有大量位置的位置之间的距离

我有超过500000个位置存储在MySQL数据库中,每天都会增加,我需要根据用户的位置来检索最近的10个位置。

我已经设法做到了这一点,但是我面临着这些数量巨大的地点的性能问题。

查询需要7秒钟才能执行。

我正在使用这样的查询

select * from (select id,name ,calc_distance(long,lat) as distance from locatoin) as location_with_distance order by distance limit 10. 

基于以上情况,在这些情况下最佳做法是什么? 或者如果在这种情况下有任何数据库系统devise使用?

注意: – 查询的主要问题是不计算距离函数的顺序。