실행 계획에서 누락 된 통계에 대한 경고


23

이해할 수없는 상황이 있습니다. SQL Server 실행 계획에 따르면 테이블에 통계가 누락되었지만 통계가 이미 생성되어 있습니다.

경고

그러나 테이블을 보면 자동으로 생성 된 통계가 있음을 알 수 있습니다.

여기에 이미지 설명을 입력하십시오

누군가 그것이 어떻게 될 수 있는지 이해하도록 도울 수 있습니까?

현재 DB에서 Auto_Update 및 Auto_Create 통계가 설정되어 있습니다.

SQL Server 2014를 사용하고 있습니다.

답변:


15

경고가 누락 된 단일 열 통계에 항상 해당되는 것은 아닙니다 .

옵티마이 저가 찾고자하는 정확한 통계량을 정확하게 결정하는 쉬운 방법은 없지만 모든 경우에 찾아 볼 수는 없지만 거의 항상 다중 열 통계량으로 쿼리의 여러 등식 술어에서 일부 상관 정보를 제공합니다.

아마도 귀하의 경우에는 경고가 표시되는 스캔 후 필터의 술어와 정확히 일치합니다.

SQL Server가 '누락 된 통계'경고에 대한 모든 열을보고하면 좋을 것입니다. 그러나 불행히도 오늘날의 방식은 아닙니다.

경고를 제거하기 위해 작성해야하는 다중 열 통계량을 식별하려면 일정량의 시행 착오가 필요할 수 있습니다. 여러 열 통계는 자동으로 만들 수 없습니다. 경고에도 불구하고 누락 된 통계가 제공 되더라도 추정의 품질이 향상 될 수 있습니다.


8

통계가 이미 특정 열에 존재한다는 것이 분명해 보이므로 두 가지 가능성을 제공합니다.

  1. 개체 탐색기는 다른 데이터베이스를 가리 킵니다. 데이터베이스 DEV이름 이 있기 때문에 의심 스럽습니다 . 따라서 어떤 경우에는 개발자를 보거나 다른 것은 그렇지 않을 수 있습니다.
  2. 사용중인 계획은 통계가 생성되기 전의 계획입니다 (이 통계가 생성 될 때 재 컴파일이 트리거되지 않는 원인이 이전에 생성되었거나 덜 생성 된 것임).

간단한 답변 (1)이 문제가 아닌지 OPTION (RECOMPILE)확인 하고 동일한 쿼리를 발행하여 확인하거나 배제하십시오 (2).


1
Aaron Bertnand, 답변 해 주셔서 감사합니다. 그러나 개체 탐색기가 현재 db를 가리키고 OPTION (RECOMPILE)을 추가해도 문제가 해결되지 않습니다. 내 쿼리가 저장 프로 시저를 실행 중임을 추가하고 싶습니다.
Artashes Khachatryan

2

방금 통계에 대한 경고가 표시되면 아래 설정으로 쿼리 또는 절차를 실행하면 다음과 같이 나타납니다.

SET SHOWPLAN_ALL ON

여기에 이미지 설명을 입력하십시오

누락 된 통계가 무엇인지 확인할 수 있습니다.

여기에 이미지 설명을 입력하십시오

여기 스크립트를 사용 하면 현재 어떤 통계가 있는지 확인할 수 있으며 누락 된 통계를 추가 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.