1

X 열로 분할 된 테이블이 있습니다. 그러나 SSMS는 누락 지수 (임팩트 80.23)를 표시 : [DBO]에 비 클러스터형 인덱스 []를 만듭니다 다음 쿼리왜 SSMS는 분할 된 열에 Missing Index 메시지를 표시합니까?

select count(*) from table where X = 'xxx' 

에 대한 [표] ([X])는 인덱스를 생성하는 것은 여전히 ​​필요하다. 분할 된 열 X? 그리고 그것은 큰 테이블에서 저밀도가 될 것입니다.

편집 :
내가 select max(x) from table로했습니다. X에 인덱스가있는 파티션되지 않은 테이블에서 유사한 SQL을 실행하는 것보다 시간이 오래 걸립니다. 이후 show statistics IO on 활성화는 (X 인덱스)없이 분할 테이블 쿼리가 더 스캔 횟수 (170) 및 논리 을 갖는 것을 보여준다 (600K) 인덱스와 비 분할 된 테이블 (이상 주사 횟수 읽 1 , 논리 읽기 : 4).

답변

1

This is a feature of SSMS 이는 쿼리에 도움이되는 인덱스를 권장합니다. limitations documented here에주의하십시오. indexes and partitioning에 대한 몇 가지 문서가 있습니다.

SQL Server는 파티션 제거를 사용하여 파티션 된 개체에 대한 쿼리 속도를 높이고 결과에 필요한 데이터가 들어있는 파티션에만 액세스합니다. 파티션 제거를 수행하려면 SQL Server가 액세스해야하는 파티션 수를 알아야합니다. SQL Server 2005에서 중첩 루프 조인을 사용하여이 열거를 수행하고 각 파티션에서 검색/검색을 수행합니다. SQL Server 2008에서는 분할 된 테이블에 액세스하기위한 실행 계획이 분할되지 않은 테이블의 실행 계획과 거의 일치합니다.

필자의 테스트에서 SQL Server 2005 실행 계획은 분할 된 열에 인덱스 (클러스터 또는 비 클러스터)가있는 이점을 나타 냈습니다. SQL Server 2008 실행 계획이 클러스터 된 인덱스 찾기를 표시하도록 변경되었지만 분할 된 열의 인덱싱 여부와 관계없이 비용은 동일했습니다. 그러나이 partitioning seeks 문서에서는 건너 뛰기 스캔에 대해 설명하며 where 절에서 참조 된 분할 된 열과 열이 동일 할 때 데이터 검색 속도가 빨라지고 비용이 절감됩니다.

자세한 내용은 SQL Server 2005 partitioning, SQL Server 2008 partitioningSQL Server 2008 partitioning seeks입니다.

+0

감사합니다. 그러나 문서화 된 제한 사항은 분할에 대해서는 언급하지 않습니다. – ca9163d9

+0

파티션 및 인덱싱에 대한 링크로 대답하도록 업데이트되었지만 찾고자하는 것이 확실하지 않습니다 ... 원래 질문은 당신이 누락 된 색인 메시지의 의미를 모르는 것이라고 가정했습니다. 이것은 파티셔닝에 대한 귀하의 의견에 단계적으로 보이지 않으므로 질문은 무엇입니까? – Bryan

+0

질문은 분할 열에 여전히 색인이 필요한 이유입니다. 그것은 자연스럽게 불필요한 것 같습니다. – ca9163d9