나는 위도와 경도와 함께 딜러들로 가득 찬 테이블을 가지고 있습니다. 주어진 위도와 경도에 대해 가장 가까운 상위 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)) 명령을 사용하는 것이 잘못되었습니다. –
아니요, 짧음 거리, 30 마일 이하로 피타고라스는 수백 피트에 이릅니다. 거리가 멀면 Haversine 함수를 사용하십시오. –