我已经意识到这个“愚蠢的”空间查询可以找到距离中心 5 公里远的所有点。源表包含 +150K 行。
这里是查询:
DECLARE @position geography = geography::Parse('POINT(9.123 45.123)')
DECLARE @circle geography = @position.STBuffer(5000) -- A circle of 5Km of radius
SELECT
g.Coordinate.STDistance(@position), g.Coordinate.Filter(@circle)
FROM
[DB_NAME].[SCHEMA].[TABLE] AS g WITH (nolock)
WHERE
g.Coordinate.Filter(@circle) = 1
我奇怪地观察到该WHERE
条件不起作用:实际上我检索到条件返回 0 的偶数 +600 个点。
有什么建议么?
为了清楚起见,表模式是
[DB_NAME].[SCHEMA].[TABLE](Coordinate geography NOT NULL)