中心から 5Km 離れた場所にあるすべてのポイントを見つけるという、この「ばかげた」空間クエリに気付きました。ソース テーブルは +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)