저는 SQL Server 2008을 사용하고 있습니다. 테이블 중 하나에서 식별자에 (클러스터 된) 기본 키를 구현했습니다. 다음은 테이블 설명입니다 :기본 키가 내 쿼리를 느리게하는 이유는 무엇입니까?
식별자 : - IdentifierId INT NOT NULL PK - 별칭 NVARCHAR (200) - NULL NOT 데이터 유형 INT
내가 두 개의 인덱스를 만든 : 별칭 하나와 데이터 형식에 대한 또 하나. 그러나, 나는 단지 이상한 것을 알아 차렸다. 다음 쿼리를 실행하는 경우 :SELECT * FROM IDENTIFIER WHERE DataType = 1
는 쿼리가 실제로 느린 인덱스 그들없이보다 기본 키와 실행을; 약 10 초 더 오래 걸립니다! 색인은 조각화되지 않았습니다. 확인했습니다. 또한이 내용은 쿼리 자체 앞에
GO
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC FREEPROCCACHE;
GO
앞에 나와 있습니다.
이 테이블은 다소 커서 수백만 개의 항목이 있습니다. 인덱스와 PK는 대부분의 쿼리에서 중요한 역할을 담당하지만이 경우 쿼리가 실행되는 이유를 이해할 수 없습니다. 느림보 어떤 아이디어? 미리
덕분
편집 : 실행 계획 작성 만 클러스터 인덱스가 사용되는 상기 데이터 유형 변수은 150
작성된 실행 계획을 살펴 보셨습니까? –
데이터 유형 열은 얼마나 선택적입니까? (즉, 해당 열이 얼마나 많은 값을 가질 수 있습니까?)? –
그냥 대답 : 클러스터 된 인덱스 및 데이터 형식 만 1에서 150 –