UPDATE STATISTICS…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;

...計画は次のようになり、推定1000万行になります。

1000万行

使用せずに行数をテーブルの実際の内容にリセットするにはどうすればよいWITH ROWCOUNTですか?

私が試したWITH FULLSCANWITH RESAMPLEそしてWITH SAMPLE n ROWS、しかし、統計行数を10万行のまま。行を挿入したり、すべての行を削除したりしても、変更が小さすぎるため、統計は更新されません。

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.