首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL优化几何查询

MySQL优化几何查询
EN

Stack Overflow用户
提问于 2018-12-02 22:47:53
回答 1查看 77关注 0票数 0

我有一个查询可以按照最接近距离的顺序正确地返回给定Point()的X英里内的行,但我在优化查询时遇到了问题,该查询目前需要6-8秒才能从包含大约25万行的表中返回10行。

geometry Location列已具有空间索引。

我当前的查询是:

代码语言:javascript
运行
复制
SELECT *,  ROUND(ST_Distance_Sphere(Location, ST_GeomFromText('POINT(lng lat)', 4326)) / 1609.344, 2) as DistanceFromTargetInMiles   
       FROM Business
       -- within 5 miles
       WHERE  ST_Distance_Sphere(Location, ST_GeomFromText('POINT(lng lat)', 4326)) /1609.344 < 5
         -- show closest results first
         order by DistanceFromTargetInMiles 
         asc LIMIT 10

我能做些什么来提高这个查询的速度?这是MySQL 8.0.1.3

EN

回答 1

Stack Overflow用户

发布于 2018-12-03 08:52:23

您可以尝试在where子句中添加附加条件,以检查位置是否与信封(posX - dist/2,posY - dist/2),(posX + dist/2,posY + dist/2)。这是更容易的计算,如果记录没有使用信封,它将被立即排除,并且不会执行更耗费资源的操作ST_Distance_Sphere。

我曾经尝试过这样做,并得到了改进。但是,我使用的是相当旧的MySQL版本,所以新版本可能不会从这种方法中受益。

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

https://stackoverflow.com/questions/53581347

复制
相关文章

相似问题

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