最近,我正在使用GeoHash将配对的地理坐标散列为散列值并将其存储在MySQL中。现在,我想在给定其他哈希的情况下找到最接近的哈希。我注意到,MYSQL通过在SQL查询中使用命令“ like”来提供BTree结构来查找最接近的哈希值范围。
问题是,由于有时我不知道范围,我怎么能找到最接近的范围而不是给出范围。
有人可以给我提示吗?
真的很感激。
最佳答案
QuadTile(或GeoHash?)可逆地将纬度+经度转换为一个数字。但是,使用它“找到最近的”变得复杂而混乱。了解有关Z顺序的信息。据我了解,您需要使用ORDER BY
和LIMIT
运行4个查询; UNION
结果加在一起;然后检查哪个是最好的。
但是,如果尝试找不到足够的项目,要知道该怎么办会变得很棘手。SPATIAL
索引提供了一种更直接的方法。
Here是一种用于为大型数据集有效“查找最近”的技术。