항목 위치를 저장하는 2012 SQL 데이터베이스의 지형 필드에 공간 인덱스가 설정되었습니다. 약 15,000 개의 아이템이 있습니다.범주 필드를 포함한 SQL 공간 인덱싱
주어진 위도/경도에서 N 킬로미터의 반경 내에있는 총 아이템을 반품해야합니다.
나는 이것을 할 수 있으며 빠릅니다.
DECLARE @radius GEOGRAPHY = GEOGRAPHY::Point(@Lat, @Lng, 4326).STBuffer(@RadiusInMetres*1000)
SELECT
COUNT(*) AS Total
FROM dbo.Items i
WHERE
i.LatLngGeo.STIntersects(@radius) = 1
그러나 지금해야 할 일은 주어진 카테고리 및 가격과 일치하는 항목을 얻기 위해 여러 필드로 필터링하는 것입니다.
DECLARE @radius GEOGRAPHY = GEOGRAPHY::Point(@Lat, @Lng, 4326).STBuffer(@RadiusInMetres*1000)
SELECT
COUNT(*) AS Total
FROM dbo.Items i
WHERE
i.LatLngGeo.STIntersects(@radius) = 1 AND
(i.Category = @Category OR @Category is null) AND
(i.Price < @Price OR @Price is null)
이 약 10 + 초 동안 멀리 갈기, 나는 공간 인덱스에 VARCHAR 또는 번호 필드를 추가하는 방법을 찾을 수 있습니다.
속도를 높이려면 어떻게해야합니까?
쿼리 계획은 어떻게 생겼습니까? 공간 인덱스를 사용하고 있습니까? –