首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中运行重复复杂空间查询时性能缓慢

在MySQL中运行重复复杂空间查询时性能缓慢
EN

Stack Overflow用户
提问于 2017-01-04 03:51:54
回答 1查看 252关注 0票数 0

我在寻找按距离选择的圆圈。我有一个纬度和经度的点,我想在数据库中搜索我周围的一些点。是的,它一定是一个圆!

我在查询中使用了这个子句(我只是搜索它,我不能做数学):

代码语言:javascript
复制
((6373 * acos (cos ( radians( 48.568962 ) ) * cos( radians( X(coords) ) ) * cos( radians( Y(coords) ) - radians( 6.821352 ) ) + sin ( radians( 48.568962 ) ) * sin( radians( X(coords) ) )))  <='0.2')

0.2 = 200米

  1. 我在使用点数据类型
  2. 是的,我有空间索引。
  3. 是的,我试着使用“空间”函数,但它不是返回一个圆,而是返回一些椭圆,我需要精确的圆

这个“循环”子句用于所有表的时间都非常、非常、非常长。当我在使用空间foos的椭圆方法时。它可能需要0.1秒,这太棒了!但我需要一个圆圈,这需要17秒,哈哈。

你能帮帮我吗?多谢各位!

编辑:空间函数意味着如下所示:

代码语言:javascript
复制
WHERE ST_Contains(ST_Buffer(
      ST_GeomFromText('POINT(12.3456 34.5678)'), (0.00001*1000)) , coords) <= 1 /* 1 km */

编辑2(表结构):

我期望从这个表中得到10行,当然,我在wz_uuid上有索引

代码语言:javascript
复制
select a....., b.... from table_1 a left join table_2 b on a.wz_uuid=b.wz_uuid

这不仅仅是2张桌子,我有11张桌子*2张像这样。(每周数据库备份)。第一个表(_1)有0-4000行,2-11有300k+行。

所有索引都是相关的,也是数据类型&编码。

代码语言:javascript
复制
wz_uuid & id - unique, btree index
others - btree indexes
coords - spatial index
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-04 05:26:05

很好的解决方案,从XX秒到100毫秒,这就是我想要的:-)

Use MySQL spatial extensions to select points inside circle

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

https://stackoverflow.com/questions/41455905

复制
相关文章

相似问题

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