1

와 쿼리 속도가 느려, 나는 테이블공간 인덱스 내가 SQL 서버 2012</p> <p>등 공간 인덱스를 사용할 수 있는지 테스트하고있어 STContains

CREATE TABLE [dbo].[Records] 
(
[ID] [uniqueidentifier] PRIMARY KEY NOT NULL, 
[Value] [nvarchar](256) NOT NULL, 
[Padding] [nvarchar](max) NOT NULL, 
[Bounds] [geometry] NOT NULL 
) 

및 인덱스

에게있어
CREATE SPATIAL INDEX [RecordsSpatialIndex] 
ON [Records]([Bounds]) 
USING GEOMETRY_GRID 
WITH 
(
    BOUNDING_BOX = (0, 0, 2000, 2000) -- all coordinates are within this range 
); 

[경계] 열에는 5 포인트 다각형, 실제로는 직사각형 (x1 y1, x1 y2, x2 y2, x2 y1, x1 y1)이 포함됩니다.

@bounds 변수에는 동일한 유형의 사각형이 포함됩니다. 이상한 점은 다음 쿼리가 공간 인덱스없이 3 배 이상 빠르게 실행된다는 것입니다.

인덱스의 65 % 시간은 클러스터 된 인덱스 Seek over Records 테이블이며 29 %는 필터입니다. 총 65 초.

인덱스가없는 경우에는 92 %의 시간이 필터이고 8 %는 레코드가있는 클러스터 된 인덱스 스캔 테이블입니다. 완전히 19 초.

여기 내가 뭘 잘못하고 있니? 특정 쿼리 쿼리 계획

+0

체크 아웃 유용한 인덱스를 생성하는 방법을 이해에 – Paparazzi

답변

2

또한이 MSDN article 나에게 도움이되었다. 쿼리 최적화 프로그램이 최적이 아닌 경우가 있습니다. 그러나 통계를 수집하고 더 똑똑해집니다.