【问题标题】:Optimising a haversine formula SQL call in PHP在 PHP 中优化 hasrsine 公式 SQL 调用
【发布时间】:2011-01-14 15:38:22
【问题描述】:

我正在使用 PHP 创建一个 MySQL 调用,我正在使用 hasrsine 论坛计算距离:

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 做一些数学运算会更有效吗?有没有更好的方法来优化这个查询?

【问题讨论】:

    标签: php sql mysql math


    【解决方案1】:

    您使用的是Spherical Law of Cosines formula,而不是Haversine Formula(速度稍慢)。

    在 MySQL 中做数学可能会快得多,我建议你 read this question 我刚才问过,至于速度优化你一定要阅读优秀的 Geo Proximity Search with MySQL 论文,请特别注意第 8-14 页和第 19 页

    【讨论】:

    • 你能告诉我最后我们要用哪个公式吗?
    【解决方案2】:

    如需超快速 MySQL 索引器,请查看Sphinx。在 MySQL 数据库中查找所需内容的速度非常快,并且会自动进行地理/距离计算。

    教程:Geo/Spatial Search Using Sphinx Search and PHP

    【讨论】:

      猜你喜欢
      • 2012-07-24
      • 2017-07-24
      • 2014-10-31
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2011-03-29
      相关资源
      最近更新 更多