gpt4 book ai didi

mysql - 不稳定的 MySQL st_distance_sphere 结果

转载 作者:行者123 更新时间:2023-11-29 02:39:47 25 4
gpt4 key购买 nike

使用 st_distance_sphere 时从 MySQL 给出的结果看起来真的很不稳定。

在用户表上运行此查询:(距离点9.45公里以内的用户列表)

select *, st_distance_sphere(`location`, ST_GeomFromText('point(-74.0104915 45.5576996)')) as distance from `users` having `distance` < 9450

返回正确的结果。

但从查询中的半径中删除 1 米:

select *, st_distance_sphere(`location`, ST_GeomFromText('point(-74.0104915 45.5576996)')) as distance from `users` having `distance` < 9449

给我这个 SQL 语法错误:#1210 - Incorrect arguments to st_distance_sphere

我还注意到添加了一个 limit语句根据限制数更改查询中断点。

有人对这种类型的查询有过类似的经历吗?我无法弄清楚这里发生了什么。

我正在使用 MySQL 5.7

谢谢!

编辑:进一步的测试表明,该查询在小集合(<~2-3k 行)上运行良好,但开始突破,非常奇怪。

最佳答案

经过大量测试,我终于找到了不稳定的根源:

单个用户在数据库中有一个无效的纬度/经度坐标 (-100, 100),可能是因为通过 phpmyadmin 进行了一些人为干预。

纬度应介于 -90.0 和 90.0 之间,和 -180.0 到 180.0 之间的经度

当该用户最终进入我们其中一项搜索的半径范围内时,查询就会崩溃。这就是为什么所有参数都会对误差产生影响(极限语句、半径范围和中心点)。一旦用户输入结果,事情就变得疯狂了。

吸取教训,保护您的数据!

关于mysql - 不稳定的 MySQL st_distance_sphere 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55093228/

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