SQL Server 地理データ型を使用して、データベースにレコードの場所を格納しています。特定の場所から特定の距離内にあるすべてのレコードを選択したいと思います。
DECLARE @location AS geography = geography::Point(@latitude, @longitude, 4326)
DECLARE @distance AS INT = 10000
SELECT *
FROM records
WHERE records.location.STDistance(@location) <= @distance
私のテストデータベースに数十のレコードがあると、これは非常に速く実行され、問題はありませんが、WHERE 句がデータベースのすべてのレコードに対して STDistance を実行していることを知っています。数千のレコードがあると、這うのが遅い。
これを行うより良い方法はありますか?ある種のリージョンを作成し、最初に隣接するリージョンのデータを選択するのでしょうか?