【问题标题】:Most efficient way to get points within radius of a point with sql server spatial使用sql server spatial获取点半径内的点的最有效方法
【发布时间】:2011-06-16 12:13:16
【问题描述】:

我正在尝试找出最有效的查询来获取给定点半径内的点。结果不必非常准确,因此我更喜欢速度而不是准确性。

我们尝试使用 where 子句来比较点的距离,使用 STDistance 像这样(其中@point 和 v.GeoPoint 是地理类型):

WHERE v.GeoPoint.STDistance(@point) <= @radius

还有一个类似这样使用 STIntersects 的:

WHERE @point.STBuffer(@radius).STIntersects(v.GeoPoint) = 1

这些查询是首选还是我错过了其他功能?

【问题讨论】:

    标签: sql-server-2008 spatial spatial-query


    【解决方案1】:

    如果准确性不是最重要的,那么使用过滤器功能可能是一个好主意: http://msdn.microsoft.com/en-us/library/cc627367.aspx

    这在很多情况下可能会快几个数量级,因为它不会检查您的匹配是否准确。 在索引中,数据以网格模式存储,因此这种方法的可行性可能取决于您的空间索引选项。

    另外,如果你不需要很多匹配,那么先做一个过滤器,然后做一个完整的相交可能是可行的。

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 2016-07-21
      • 2019-06-29
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2015-08-23
      相关资源
      最近更新 更多