是的,你应该使用空间索引,但你也应该考虑到简单可搜索性问题的限制。
空间索引适用于在特定区域内查找位置,但不适用于确定最短距离。
所以...当尝试找到最近的物品时,从一个小距离开始,在该区域内查找物品。类似这样:
select id
from dbo.locations
where location.STIntersects(@point.STBuffer(@somedistance)) = 1;
...然后慢慢增加@somedistance的值,直到找到你想要的内容。这将使搜索能够快速排除不感兴趣的位置。