优化使用PHP中的Haversine公式SQL调用

10

我正在使用PHP创建一个MySQL调用,我正在使用Haversine公式计算距离:

SELECT name, id,
   (6371 * acos(cos(radians(' . $lat . ')) 
   * cos(radians(geoname.latitude)) 
   * cos(radians(geoname.longitude) - radians(' . $lon . ')) 
   + sin(radians(' . $lat . ')) 
   * sin(radians(geoname.latitude)))) AS distance 

我的问题是:在SQL中进行所有这些计算是否最好?此查询搜索大约1000条记录的表。在PHP中进行一些数学运算是否比在SQL中更有效?是否有更好的方法来优化此查询?

2个回答

4

请问我们最终要使用哪个公式? - Hunt

2

如果你需要一个超快的MySQL索引器,可以试试Sphinx。它在查找MySQL数据库中所需内容时非常快速,并且可以自动进行地理/距离计算。

教程:使用Sphinx Search和PHP进行地理/空间搜索Geo/Spatial Search Using Sphinx Search and PHP


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接