有效地查找附近位置对于地图和导航等应用程序至关重要。半正矢公式是一种广泛使用的计算球体上两点之间距离的方法。该公式可以直接在 SQL 中实现,以优化基于位置的搜索查询。
在您的情况下,您担心计算超过 5000 个企业的距离的性能。考虑使用以下带有半正矢公式的 MySQL 查询:
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”替换为用户位置的纬度和经度。通过计算数据库内的距离,您无需检索所有商家并在 PHP 中执行距离计算。
使用这种优化方法,您可以显着提高附近位置搜索的速度,使其适合用于处理大型数据库。为了获得最佳性能,对距离计算中涉及的列进行索引非常重要。
以上是如何优化大型企业数据库的基于位置的搜索查询?的详细内容。更多信息请关注PHP中文网其他相关文章!