5

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 を実行していることを知っています。数千のレコードがあると、這うのが遅い。

これを行うより良い方法はありますか?ある種のリージョンを作成し、最初に隣接するリージョンのデータを選択するのでしょうか?

4

1 に答える 1