【发布时间】:2010-04-13 19:25:18
【问题描述】:
我有一个坐标。我想从存储在 MySQL 数据库中的数千行中找到最接近的“n”(n 是变量值)坐标。我还希望能够定义相关坐标与数据库中坐标之间的最大和最小距离。
我该怎么做才最好?使用 PHP 会不会很疯狂,因为我比 MySQL 更了解语法?
如果我使用 MySQL 函数,如果我选择切换服务器,如何在数据库之间移动它?它是如何存储的?
最后,准确通过所有这些坐标的最有效方法是什么 - 这些坐标都彼此相对接近?
感谢您的宝贵时间,
约翰。
【问题讨论】:
-
这个链接对我很有帮助:scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL 还有另一个 stackoverflow 问题:stackoverflow.com/questions/574691/…
-
这个问题之前已经解决了(甚至在这个网站上)。请参阅@Billiam 的评论。我能给出的唯一建议是通过缓存“热门区域”或其他东西来尽可能避免重创数据库。这将为您提供最有效的解决方案。
-
不久前我有一个类似的问题:一张满是位置的桌子,给定一个位置 X(最常见的是用户的位置),我想找出最接近的 N我表中的位置,可能同时通过其他条件进行过滤。我意识到继续查询数据库会非常糟糕,而且缓存每个查询也会太多,所以我最终做了一些事情,比如根据与 X 的距离计算位置的有序列表,(mem)将其缓存一段时间并在其上应用额外的显示过滤器。
-
@aduric:减少数据库负载的一个好技巧是应用“WHERE”子句,该子句将限制进行进一步计算的点数。例如,X 是纬度,Y 是经度 - “X-3 和 X+3 之间的经度和 Y-3 和 Y+3 之间的纬度”。当然,“3”会根据点的密度和/或指定纬度/经度处的最大线性距离所跨越的度数而有所不同。
标签: php mysql gps coordinates zipcode