Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 使用sql server spatial获取点半径内点的最有效方法_Sql Server 2008_Spatial_Spatial Query - Fatal编程技术网

Sql server 2008 使用sql server spatial获取点半径内点的最有效方法

Sql server 2008 使用sql server spatial获取点半径内点的最有效方法,sql-server-2008,spatial,spatial-query,Sql Server 2008,Spatial,Spatial Query,我正在努力找出最有效的查询,以获取给定点半径内的点。结果不一定非常准确,所以我更喜欢速度而不是准确性 我们已经尝试使用where子句,使用STDistance(其中@point和v.GeoPoint是地理类型)比较点的距离: 这些查询是首选的还是我遗漏了另一个功能?如果准确性不是最重要的,那么使用过滤功能可能是个好主意: 在许多情况下,这可能会快几个数量级,因为它不会检查您的匹配是否准确。 在索引中,数据存储在网格模式中,因此这种方法的可行性可能取决于您的空间索引选项 此外,如果您不需要进行太

我正在努力找出最有效的查询,以获取给定点半径内的点。结果不一定非常准确,所以我更喜欢速度而不是准确性

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


这些查询是首选的还是我遗漏了另一个功能?

如果准确性不是最重要的,那么使用过滤功能可能是个好主意:

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

此外,如果您不需要进行太多的匹配,那么先进行筛选,然后进行完全相交可能是可行的

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