优化位置邻近搜索的距离计算
问题:
您的 PHP 脚本计算距离使用半正弦公式在给定位置和数据库中的多个业务位置之间进行比较。然而,随着数据库规模的不断增大(5000 家企业),您开始担心性能问题。
解决方案:利用基于数据库的距离计算
显着提高为了提高搜索效率,请考虑使用直接包含半正矢公式的数据库查询。此方法无需检索所有业务数据并在 PHP 脚本中执行距离计算。具体方法如下:
使用 MySQL 的 HAVING 子句,您可以对结果集应用距离过滤器:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
在此查询中:
按在数据库中执行此计算,可以大大减少需要传输到 PHP 脚本以进行进一步处理的数据量。这种方法可以提高性能,尤其是对于大型数据集。
以上是如何使用大型数据库优化 PHP 中的位置邻近搜索性能?的详细内容。更多信息请关注PHP中文网其他相关文章!