MySQL的ST_DWithin(PostGIS-PostgreSQL)是否等效?

时间:2019-05-27 12:15:24

标签: mysql geospatial postgis

我正在尝试找到一种有效的方法来进行邻近查询,即返回距离中心POINT半径以内的POINT。

我了解到PostGIS的ST_DWithin方法是在PostgreSQL中实现此目的的一种好方法,并且它uses the INDEX也是如此。

我当前正在使用ST_Distance_Sphere(g1, g2 [, radius]),它返回球体上Point之间的最小球面距离,以米为单位。

SELECT placeNames FROM myPlaces
WHERE ST_Distance_Sphere(placeLocation, POINT(28.861105, 77.337)) < 10000

我正在使用WHERE子句来过滤行。查询使用索引吗?如果没有,是否有更好的方法来实现相同的目标。

我正在使用MySQL 5.7.26和8.0.16,它们都运行默认的InnoDB数据库引擎。

2 个答案:

答案 0 :(得分:0)

在MySQL的这一点上,似乎没有ST_Distance_Sphere或任何其他使用空间索引的“更有效”的替代方法。

答案 1 :(得分:-1)

正确设置SRID,此查询4326使用它; 样本

SELECT ST_SetSRID(ST_MakePoint(-71.1043443253471,42.3150676015829),4326);