使用半正矢公式查找附近地点
在处理数据库中存储的大量营业地点时,查找效率距离给定点最近的那些变得至关重要。随着企业数量的增加,当前检索所有位置并逐个计算距离的方法可能会变得非常慢。
引入半正弦公式
半正弦公式提供考虑到地球的曲率,计算地球上两点之间的距离的更有效方法。这可以合并到 SQL 查询中以直接检索最近的位置。
优化的 SQL 查询
使用半正弦公式优化的 SQL 查询如下所示:
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;
在此查询中,37 和 -122 分别表示给定位置的纬度和经度。距离列包含给定位置与每个商家之间的距离。 HAVING 子句过滤掉超过 25 英里(或其他所需半径)的位置。
优点
这种优化方法有几个优点:
结论
通过将Haversine公式合并到SQL查询中,可以显着提高查找给定点最近位置的效率,有效解决性能问题并提供可扩展的解决方案对于大型数据库。
以上是半正矢公式如何优化在数据库中查找附近位置?的详细内容。更多信息请关注PHP中文网其他相关文章!