gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:38:24 24 4
gpt4 key购买 nike

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

我在查询中使用这个子句(我只是用谷歌搜索,我不会做数学):

((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. 我使用的是 POINT 数据类型
  2. 是的,我有 SPATIAL 索引
  3. 是的,我正在尝试使用“空间”函数,但它没有返回圆,而是返回一些 OVAL,并且我需要精确的圆

这个“circle”子句对所有表都需要非常非常非常长的时间。当我使用 SPATIAL foos 的 OVAL 方法时。大约需要 0.1 秒,这太棒了!但我需要圆圈,这需要 17 秒,哈哈。

你能帮我一个人吗?非常感谢大家!

编辑:空间函数意味着这样一些:

WHERE ST_Contains(ST_Buffer(
ST_GeomFromText('POINT(12.3456 34.5678)'), (0.00001*1000)) , coords) <= 1 /* 1 km */

编辑2(表结构。):

enter image description here enter image description here

我期望此表中有 10 行,当然我在 wz_uuid 上有索引

select a....., b.... from table_1 a left join table_2 b on a.wz_uuid=b.wz_uuid

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

所有索引以及数据类型和编码都是相关的。

wz_uuid & id - unique, btree index
others - btree indexes
coords - spatial index

最佳答案

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

Use MySQL spatial extensions to select points inside circle

关于mysql - 在 MySQL 中运行重复的复杂空间查询时性能缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com