我正在尝试找到一种有效的方法来进行邻近查询,即返回距离中心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数据库引擎。
答案 0 :(得分:0)
在MySQL的这一点上,似乎没有ST_Distance_Sphere
或任何其他使用空间索引的“更有效”的替代方法。
答案 1 :(得分:-1)
正确设置SRID,此查询4326使用它; 样本
SELECT ST_SetSRID(ST_MakePoint(-71.1043443253471,42.3150676015829),4326);