쿼리 조정 및 테스트 목적으로을 실행하여 행 개수와 페이지 개수를 테이블의 인덱스 통계에 수동으로 할당 할 수 있습니다 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 행).
UPDATE STATISTICS
명령을 실행하십시오 .
UPDATE STATISTICS dbo.StatTest WITH ROWCOUNT=10000000;
...이 계획은 이제 약 1 천만 행으로 표시됩니다.
행 개수를 사용하지 않고 테이블의 실제 내용으로 재설정하는 방법은 WITH ROWCOUNT
무엇입니까?
WITH FULLSCAN
, WITH RESAMPLE
및을 시도 WITH SAMPLE n ROWS
했지만 통계 행 수는 1,000 만 행으로 유지됩니다. 행을 삽입하거나 모든 행을 삭제해도 변경 내용이 너무 작아서 통계가 업데이트되지 않습니다.