MySQL`ST_BUFFER`约束到一般的模糊半径

时间:2019-05-07 03:25:33

标签: mysql gis spatial mysql-spatial

我正在将locations表上的SELECTS查询计划从基于haversine算法的搜索转换为依赖于POINT字段上的SPATIAL索引的搜索计划。迄今为止,我们在使用以下模式减少查询时间方面取得了令人难以置信的成功:

SELECT 
  ST_DISTANCE_SPHERE(geo_point, point('-97.13545999999', '32.69139300001')) AS distance, 
  id, 
  name
FROM locations
WHERE 
  ST_WITHIN(geo_point, ST_BUFFER(point('-97.13545999999', '32.69139300001'), 1.12))
ORDER BY distance ASC

例如,在此查询中,1.12在具有3M记录的表上,以几毫秒为单位获得了距指定点约50英里以内的结果。

但是,我们需要能够稍微改变阈值以收集距给定点100英里或25英里等的结果。但是,据我了解,ST_BUFFER的第二个参数需要度,而不是球面距离作为输入。

有什么方法可以动态设置ST_BUFFER的第二个参数值,以便可以预测阈值?当我们在世界的其他地方尝试1.12时,实际缓冲区大小略有不同。

精度并不重要。生成的位置不必在中心点的精确范围内。

0 个答案:

没有答案