gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:33:49 24 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/41634135/

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