我有一張滿載經銷商的表格以及他們的經度和緯度。我正在努力確定最接近的n個經銷商,以確定任何給定的緯度和經度。我已經有了計算位置之間距離的功能,但我想盡可能少地進行計算(我的表格可以包含數千個條目)。目前我必須計算每個條目的距離,然後對它們進行排序。在進行計算以提高性能之前,是否有任何方法進行排序?SQL 2003距離緯度經度
This問題很好,但是我並不總是知道我的範圍。我應該選擇一個任意高的範圍,然後改進我的結果?我很感謝社區提供的任何幫助。
declare @Lat real
declare @lon real
Set @lat = 41.05
Set @lon = -73.53
SELECT top 10
MemberID,
Address1,
City,
State,
Zip,
Phone,
Lat,
Lon,
(SELECT fun_DistanceLatLon] (@Lat,@lon,Lat,Lon)) as mDistance --Calculate distance
FROM
Dealers
Order by
(SELECT fun_DistanceLatLon] (@Lat,@lon,Lat,Lon))
謝謝。這確實可以提高性能(隨着記錄數量的增加,性能會提高)。如果我不需要實際的距離,是否有遺漏內部查詢的錯誤,並使用'SQRT(SQUARE(@Lat - Lat)+ SQUARE(@Lon - Lon))' – 2010-03-23 00:28:26
距離等於30英里或更小畢達哥拉斯精確到幾百英尺。使用Haversine功能可獲得更遠的距離。 – 2010-03-23 01:29:34