使用 MySQL 查找某个范围内的坐标
为了提高数据库性能并减少处理需求,需要优化检索特定数据的查询指定范围。在此场景中,您有一个包含 100,000 个地址的数据库,每个地址都有其纬度和经度坐标。您的目标是仅显示给定用户位置 5 英里半径内的地址,从而有效地将结果从 100,000 个缩小到大约 5 或 6 个。
要有效解决此问题,您可以利用直接在 MySQL 查询中使用半正矢公式。此数学公式使用各自的纬度和经度值计算球体上两点之间的距离。
以下是如何将半正弦公式合并到查询中:
$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
在此查询中,将 $lat 和 $lng 替换为用户位置的纬度和经度坐标。此查询的结果将是一个地址列表,其中包含距离列中指定的距用户位置的距离。然后,您可以使用此列表过滤掉 5 英里范围内的地址。
通过直接在 MySQL 中应用半正矢公式,您可以显着减少检索的记录数量并提高您的性能数据库操作。此方法可确保仅返回相关地址,从而最大限度地减少不必要的处理并提高应用程序的响应能力。
以上是如何使用MySQL高效查找5英里半径内的坐标?的详细内容。更多信息请关注PHP中文网其他相关文章!