สำหรับการปรับแต่งและวัตถุประสงค์ในการทดสอบแบบสอบถามคุณสามารถกำหนด rowcount และ PAGECOUNT 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;
... และแผนมีลักษณะเช่นนี้ตอนนี้มีประมาณ 10 ล้านแถว:
ฉันจะรีเซ็ต rowcount เป็นเนื้อหาจริงของตารางโดยWITH ROWCOUNT
ไม่ใช้ได้อย่างไร
ฉันได้พยายามWITH FULLSCAN
, WITH RESAMPLE
และWITH SAMPLE n ROWS
แต่สถิติยังคง rowcount 10 ล้านแถว การแทรกแถวหรือลบแถวทั้งหมดไม่ได้อัปเดตสถิติเนื่องจากการเปลี่ยนแปลงมีขนาดเล็กเกินไป