Untuk tujuan pencarian dan pengujian kueri, Anda dapat secara manual menetapkan jumlah baris dan jumlah halaman ke statistik indeks tabel dengan menjalankan UPDATE STATISTICS
. Tetapi bagaimana Anda menghitung ulang / mereset statistik ke isi tabel yang sebenarnya?
--- 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;
Kueri dummy:
SELECT i%100, COUNT(*) FROM dbo.StatTest GROUP BY i%100;
... akan mengembalikan paket kueri berikut (perkiraan baris dalam Pemindaian Indeks adalah 1024 baris).
Jalankan UPDATE STATISTICS
perintah ..
UPDATE STATISTICS dbo.StatTest WITH ROWCOUNT=10000000;
... dan rencananya terlihat seperti ini, sekarang dengan perkiraan 10 juta baris:
Bagaimana cara mengatur ulang jumlah baris ke isi sebenarnya dari tabel tanpa menggunakan WITH ROWCOUNT
?
Saya sudah mencoba WITH FULLSCAN
, WITH RESAMPLE
dan WITH SAMPLE n ROWS
, tetapi statistik rowcount tetap 10 juta baris. Memasukkan baris atau bahkan menghapus semua baris tidak memperbarui statistik, karena perubahannya terlalu kecil.