在PHP中优化hasrsine公式SQL调用

Ale*_*lex 10 php mysql sql math

我正在使用PHP创建MySQL调用,我正在使用hasrsine forumula计算距离:

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 
Run Code Online (Sandbox Code Playgroud)

我的问题是; 最好在SQL中进行所有这些计算吗?此查询搜索包含大约1000条记录的表.用PHP而不是SQL做一些数学会更有效吗?有没有更好的方法来优化此查询?

Ali*_*xel 4

您使用的是余弦球面定律公式,而不是半正弦公式(速度稍慢)。

在 MySQL 中进行数学计算可能会快得多,我建议您阅读我不久前提出的这个问题,至于速度优化,您绝对应该阅读优秀的Geo Proximity Search with MySQL论文,特别注意第 8-14 页和19 .