有两个包含空间数据的MSSQL表:
- AddressPoints - 包含地址的地理位置(POINT结构)
- 管道 - 包含管道的地理位置(LINESTRING结构)
AddressPoints表应包含距离最近的管道段的距离。我目前正在尝试编写有效的查询。我最终得到了以下查询:
select a.ogr_fid, min(a.geom.STDistance(p.geom))
from AddressPoints a, Pipeline p
group by a.ogr_fid
但是,AddressPoints和Pipeline表包含大量影响执行速度的数据。 两个表都包含空间索引,但我不确定此查询是否使用它们。
答案 0 :(得分:0)
我认为我找到了可以接受的解决方案:
select a.ogr_fid, min(a.geom.STDistance(p.geom))
from AddressPoint a
inner join Pipeline p on a.geom.STDistance(p.geom) < 200
group by a.ogr_fid
order by a.ogr_fid
此查询与来自问题的查询执行相同的工作。但它会在1秒内执行。第一次查询的执行时间是47秒。