2013-08-30 6 views
1

분명히 인덱스 통계에 대해 이해할 수없는 것이 있습니다.비 클러스터형 인덱스가 생성되었지만 경고 열을 가져 오지 않음 통계

로깅 목적으로 수백만 개의 행이있는 테이블이 있습니다. 성능을 향상시키기 위해 인덱스에 고유 한 클러스터 된 인덱스와 뷰를 만들었습니다. 첫 번째 인덱스는 고유 클러스터 형이어야하므로 클러스터되지 않은 인덱스는 인덱스에 더 많은 열을 포함 할 수 있어야합니다.

이제 색인과보기가 있거나없는 쿼리의 성능을 비교해 보겠습니다. 나는 실제로 그것에서 몇몇 속도를 더 얻고 읽는다 cpu 사용법은 또한 더 낮게 보인다.

그러나 SQL Server가 적용된 실행 계획을 살펴보면 클러스터되지 않은 인덱스에 대한 인덱스 검색에서 일부 열에 통계가 없다는 경고가 나타납니다. 이러한 열은 내 where 절에도 나타납니다. 그래서 여기서 개선 할 성능이있을 수 있습니다. 실행 계획에서 통계가없는 것에 대해 불만을 제기하는 두 개의 열이 있습니다. 그 중 하나는 비 클러스터형 인덱스 내부에 있고 다른 하나는 해당 인덱스의 include 절 안에 있습니다. 어쨌든 그 통계가 아직 누락 된 방법을 이해하지 못합니다.

예를 들어 여기서 http://msdn.microsoft.com/en-us/library/ms190397.aspx은 "쿼리 최적화 프로그램이 인덱스를 만들 때 테이블이나 뷰의 인덱스 통계를 만듭니다."라고 표시합니다. 글쎄, 난 그 색인을 만들었고 아무런 행도 업데이트되거나 삽입되지 않았다. 또한 AUTO_UPDATE_STATISTICS와 AUTO_CREATE_STATISTICS가 활성화되어 있는지 확인하고 확인했습니다. 여기서 무엇을 놓치고 있습니까?

또한 SQL Server Management Studio를 통해 해당 인덱스에 대한 통계를 살펴 보았습니다. (뷰를 확장 한 다음 통계에서 비 클러스터형 인덱스를 마우스 오른쪽 단추로 클릭 한 다음 속성을 선택하십시오) 통계 열 아래에 언급 된 두 열 중 하나가 (그 중 하나는 include 절 안에 있지 않음).

이 경고를 없애려면 어떻게해야합니까? 즉, 존재하는 통계를 만들거나 적용 할 수 있습니까?

+0

뷰와 쿼리의 정의는 무엇입니까? –

답변

0

이 코드로 통계를 만들어보십시오 :

CREATE STATISTICS StatName 
ON dbo.IndexedView(ColumnName,...) 
WITH SAMPLE 25 PERCENT 
+0

답변을 주셔서 감사합니다. 평소와 같이 색인을 작성할 때 통계를 작성해야하기 때문에 약간 확장 할 수 있습니까? 왜 수동으로해야할까요? – DrCopyPaste

+0

확장하려면 더 많은 정보가 필요합니다. XML 계획을 게시 할 수 있습니까? – PollusB