最近我使用geohash将成对的geo坐标散列成一个散列值并存储在mysql中。现在我想找到最近的散列给定另一个散列。我注意到mysql提供了btree结构,通过在sql查询中使用“like”命令来查找一系列最近的散列。问题是,我怎么能找到最近的一个而不是给出一个范围,因为有时我不知道范围。有人能给我一个提示吗?真的很感激。
iecba09b1#
四边形(或geohash?)可逆地将纬度+经度转换为单个数字。但是用它来“寻找最近的”会变得复杂和混乱。阅读有关z排序的内容。据我所知,您需要使用 ORDER BY 以及 LIMIT ; UNION 把结果放在一起;然后看看哪个最好。但是,如果尝试没有找到足够的物品,就很难知道该怎么办。 SPATIAL 索引提供了一种更直接的方法。下面是一种有效地为大型数据集“查找最近的”的技术。
ORDER BY
LIMIT
UNION
SPATIAL
1条答案
按热度按时间iecba09b1#
四边形(或geohash?)可逆地将纬度+经度转换为单个数字。但是用它来“寻找最近的”会变得复杂和混乱。阅读有关z排序的内容。据我所知,您需要使用
ORDER BY
以及LIMIT
;UNION
把结果放在一起;然后看看哪个最好。但是,如果尝试没有找到足够的物品,就很难知道该怎么办。
SPATIAL
索引提供了一种更直接的方法。下面是一种有效地为大型数据集“查找最近的”的技术。