我正在搜索按距离选择的圆圈。我有一点与纬度和&经度和我想搜索我在数据库中的一些点我周围。是的,它必须是一个圆圈!
我在查询中使用此子句(我只是谷歌,我不能做数学):
((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米
这个&#34;圈&#34;对于所有表,子句需要非常非常长的时间。当我使用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 */
EDIT 2(表格结构):
我希望这些表中有10行,当然我在wz_uuid上有索引
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 +行。
所有索引都是相关的,也是数据类型和编码。
wz_uuid & id - unique, btree index
others - btree indexes
coords - spatial index
答案 0 :(得分:0)
从XX秒到100毫秒的绝佳解决方案,这就是我想要的: - )