gpt4 book ai didi

mysql - 查找半径 MySQL(纬度经度)内点的大表的最快方法是什么

转载 作者:行者123 更新时间:2023-11-29 05:11:35 30 4
gpt4 key购买 nike

目前我有几个表有 100k+ 行。我正在尝试查找如下数据。

SELECT
*, SQRT(POW(69.1 * (latitude - '49.1044302'), 2) + POW(69.1 * ('-122.801094' - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM stops
HAVING distance < 5
ORDER BY distance limit 100

但目前这种方法在高负载下会变慢。某些查询需要 20 多秒才能完成。

如果有人知道任何更好的优化方法,那就太好了。

最佳答案

首先,如果您有大量地理空间数据,您应该使用 mysql 的地理空间扩展而不是像这样的计算。然后你可以 create spatial indexes这会加快许多查询的速度,而且您不必像上面那样编写冗长的查询。

使用与 ST_Distance 的比较或者创建一个具有感兴趣半径的几何体和 ST_within 可能会给你很好的结果并且可能比当前快很多。然而,实现这一目标的最好和最快的方法,ST_Dwithin尚未在 mysql 中实现。

关于mysql - 查找半径 MySQL(纬度经度)内点的大表的最快方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38548473/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com