나는 centroids를 내부에 들어 맞는 다각형과 일치 시키려고 시도하는 커다란 쿼리를 가지고 있습니다. 블록과 폴리곤의 Z 값에 의해 제약을받는 반면, 여전히 lot of point-in-poly 계산을 수행하며 실행 시간은 입니다. 몇 가지 배경에 대한이점을 제공하지 않는 공간 인덱스
:
- 무게 중심을 포함하는 테이블은 테이블에 250 행
- 공간 데이터의 모두가 세계의 아주 작은 영역의 경계 상자에 전체 일에만 7643 X 2,351m 해당 행의
- , 660K 적합 일치 다각형을 포함하는 테이블이 10K 행
- 테이블의 공간 데이터의 모두가
- 는 EV에있는 Z의 critera입니다 세계 그 행의
- 의 작은 영역 엉, 2366 일치하는 이름 기준에 어떤 인덱스없이 쿼리를 실행
- 11 시간이 소요 및 91K는 쿼리가이 같은 것입니다
일치 반환
select blocks.Id, blocks.WGS84Centroid, polygons.Shape
from
blocks inner join polygons
on
blocks.ZCentre >= (polygons.ZCentre - (polygons.ZLength/2)) and blocks.ZCentre <= (polygons.ZCentre + (polygons.ZLength/2)) and
polygons.Shape.STIntersects(blocks.WGS84Centroid) = 1
inner join name
on
polygons.nameId = name.ID
where name.Name = 'blah'
이 쿼리의 속도를 높이기 위해 blocks.WGS84Centroid
에 공간 인덱스를 추가하고 polygons.Shape
에 공간 인덱스를 추가했습니다.
쿼리 분석기는 blocks.Id 및 blocks.WGS84Centroid를 포함하여 블록 .ZCentre에 클러스터되지 않은 인덱스를 제안했습니다.
을 그리고 필터 비용 :
모든 그 후, 여기에 쿼리 계획이다
이
그러나 이러한 3 인덱스를 추가 한 후 쿼리가 여전히 오래 실행하는 데 걸리는.
지금 무엇을 할 수 있습니까?
통계를 업데이트 했습니까? –
@DavidBrabant : 색인이 새로 작성되었습니다. 도움이 될지 의심 스럽네. – Coxy
사실 WITH (INDEX (CentroidSpatialIndex))를 사용하여 쿼리 분석기를 힌트하려고하면 클러스터 된 인덱스 검색에 /! \ 아이콘이 표시됩니다. CREATE STATISTICS를 실행하려고했지만 'dbo.blocks'테이블의 'WGS84Centroid'열이 인덱스 또는 통계에서 키 열로 사용할 수없는 유형입니다. – Coxy