StContains 함수를 사용하여 두 개의 지형 열을 비교하고 싶지만 쿼리 속도가 느려지고 30-40 초 후에 성능이 크게 향상됩니다.STContains를 사용하여 지리 열을 비교하면 SQL Server에서 쿼리 속도가 느려집니다.
나는 쿼리 아래 사용하고 있습니다 : 여기
SELECT DISTINCT
T.[LocationID], G.[Boundary].STContains(ESP.GeographyValue)
FROM [#TempTable] T
CROSS JOIN [dbo].[GeographyTable] G
INNER JOIN [dbo].LocationTable ESP ON T.LocationID = ESP.LocationID
WHERE G.[ID] = 1
모두 경계 및 GeographyValue 지리 데이터 유형입니다.
G. [경계] .ST가 포함되어 있습니다. (ESP.GeographyValue) 다음 쿼리는 0 초에 실행되므로 주 성능 문제는 StContains 때문입니다.
결과 집합에 7000 레코드이 포함되어있을 수 있습니다.
업데이트 :
나는 두 열에 공간 인덱스를 추가 한 여전히 실행 속도가 느립니다. 나는 또한 STContains을 시도
select ES.* from LocationTable ES INNER JOIN GeographyTable G ON ES.GeographyValue.STEquals(G.Boundary) = 1 Where G.Id = 1
하지만 여전히 행운 : 간단한 쿼리를 실행하여 10 쿼리 아래 사용 secs.I 걸립니다.
는 7000 개 서로 다른 위치를 비교해야이 쿼리의 목적은 무엇인가를 검토? 공간 비교는 복잡하고 리소스 집약적이므로 잠시 시간을 할애 할 수 있으며 7000 개를 수행하고 있습니다! Geography 열에 공간 색인이 있습니까? – iamdave
사용자가 UI를 선택할 수있는 지리 목록이 있는데 지리 테이블과 일치하는 위치를 비교하려고합니다. LocationTable이 다른 데이터베이스에 있으므로 GeographyTable ID 열을 추가 할 수 없습니다. 공간 인덱스가 두 테이블 모두에 없습니다. 추가 할 테이블과 방법을 안내 할 수 있습니까? –
공간적 색인이 공간적 열로 이동합니다 ... 사용자가 UI를 통해 * 하나 * 지리를 선택하는 경우 왜 모두 7000을 비교합니까? 그들이 선택한 것을 비교하십시오. – iamdave