통계 업데이트 후 통계를 재설정하는 방법… WITH ROWCOUNT


11

쿼리 조정 및 테스트 목적으로을 실행하여 행 개수와 페이지 개수를 테이블의 인덱스 통계에 수동으로 할당 할 수 있습니다 UPDATE STATISTICS. 그러나 통계를 테이블의 실제 내용으로 어떻게 다시 계산 / 재설정합니까?

--- Create a table..
CREATE TABLE dbo.StatTest (
    i      int NOT NULL,
    CONSTRAINT PK_StatTest PRIMARY KEY CLUSTERED (i)
);
GO

--- .. and give it a thousand-or-so rows:
DECLARE @i int=1;
INSERT INTO dbo.StatTest (i) VALUES (@i);

WHILE (@i<1000) BEGIN;
    INSERT INTO dbo.StatTest (i) SELECT @i+i FROM dbo.StatTest;
    SET @i=@i*2;
END;

더미 쿼리 :

SELECT i%100, COUNT(*) FROM dbo.StatTest GROUP BY i%100;

... 다음 쿼리 계획을 반환합니다 (인덱스 스캔의 행 추정치는 1024 행).

10,000 행

UPDATE STATISTICS명령을 실행하십시오 .

UPDATE STATISTICS dbo.StatTest WITH ROWCOUNT=10000000;

...이 계획은 이제 약 1 천만 행으로 표시됩니다.

천 만행

행 개수를 사용하지 않고 테이블의 실제 내용으로 재설정하는 방법은 WITH ROWCOUNT무엇입니까?

WITH FULLSCAN, WITH RESAMPLE및을 시도 WITH SAMPLE n ROWS했지만 통계 행 수는 1,000 만 행으로 유지됩니다. 행을 삽입하거나 모든 행을 삭제해도 변경 내용이 너무 작아서 통계가 업데이트되지 않습니다.

답변:


15

옵션 DBCC UPDATEUSAGE과 함께 사용하십시오 COUNT_ROWS.

DBCC UPDATEUSAGE 
(   { database_name | database_id | 0 } 
    [ , { table_name | table_id | view_name | view_id } 
    [ , { index_name | index_id } ] ] 
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ] 

선적 서류 비치

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