【发布时间】:2019-07-03 13:22:29
【问题描述】:
我正在尝试找到一种有效的方法来进行邻近查询,即返回位于中心 POINT 半径范围内的 POINT。
我了解 PostGIS 的 ST_DWithin 方法是在 PostgreSQL 中执行此操作的好方法,并且它 uses the INDEX。
我目前正在使用ST_Distance_Sphere(g1, g2 [, radius]),它返回球体上点之间的最小球面距离,以米为单位。
SELECT placeNames FROM myPlaces
WHERE ST_Distance_Sphere(placeLocation, POINT(28.861105, 77.337)) < 10000
我正在使用WHERE 子句过滤行。查询是否使用索引?如果没有,是否有更好的方法来实现。
我正在使用 MySQL 5.7.26 和 8.0.16,它们都运行默认的 InnoDB 数据库引擎。
【问题讨论】:
-
使用 EXPLAIN 检查查询的执行方式:dev.mysql.com/doc/refman/5.7/en/using-spatial-indexes.html
-
# id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra``'1', 'SIMPLE', 'myStoreLocations', NULL, 'ALL', NULL, NULL, NULL, NULL, '2', '100.00', 'Using where' -
我觉得这里不用空间索引
-
我同意。只要执行时间不是“淫秽”的,我就不会再考虑这个问题了。
标签: mysql geospatial postgis