วิธีรีเซ็ตสถิติหลังจากอัพเดตสถิติ ... ด้วย ROWCOUNT


11

สำหรับการปรับแต่งและวัตถุประสงค์ในการทดสอบแบบสอบถามคุณสามารถกำหนด 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 แถว)

10,000 แถว

เรียกใช้UPDATE STATISTICSคำสั่ง ..

UPDATE STATISTICS dbo.StatTest WITH ROWCOUNT=10000000;

... และแผนมีลักษณะเช่นนี้ตอนนี้มีประมาณ 10 ล้านแถว:

10 ล้านแถว

ฉันจะรีเซ็ต rowcount เป็นเนื้อหาจริงของตารางโดยWITH ROWCOUNTไม่ใช้ได้อย่างไร

ฉันได้พยายามWITH FULLSCAN, WITH RESAMPLEและWITH SAMPLE n ROWSแต่สถิติยังคง rowcount 10 ล้านแถว การแทรกแถวหรือลบแถวทั้งหมดไม่ได้อัปเดตสถิติเนื่องจากการเปลี่ยนแปลงมีขนาดเล็กเกินไป

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.