首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化了在mysql中搜索2000多个poi数据的方法

优化了在mysql中搜索2000多个poi数据的方法
EN

Database Administration用户
提问于 2014-08-26 17:38:14
回答 1查看 98关注 0票数 0

我们的mysql数据库中有超过200万的poi数据。在任何时候,我们都需要根据在这个链接http://sqlfiddle.com/#!2/abba1/4上找到的公式找到最近的点

代码语言:javascript
复制
select *, ( 3959 * acos( cos( radians(
-- latitude
@my_lat) ) * cos( radians( 
destination.latitude ) ) * cos( radians( 
destination.longitude ) - radians(
-- longitude
@my_lon) ) + sin( radians(
-- latitude
@my_lat) ) * sin( radians( 
destination.latitude ) ) ) ) AS distance 
-- table containing targets to compare distance
from destination
order by distance limit 1
;

我们发现这个问题花了很长时间。一些论坛建议限制搜索基于+1和-1的lat和长值。现在的问题是,我们需要提供最低限度的保护措施。因此,优化在这方面有帮助,还是更好的方法来做到这一点?

EN

回答 1

Database Administration用户

发布于 2015-08-27 18:57:30

您可以使用Geohashing (地学)

您必须为表中的每个POI创建一个Geo散列。

然后,根据您选择的精度,您可以使用LEFT(your_geohash_column,'c1','c3','c4','c5','c6',c7','c8'),其中c's是由您所期望的精度计算出的中心的8个邻居。

请记住,您正在限制结果的精度,您可以认为它的半径。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/74991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档