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;

... और योजना इस तरह दिखती है, अब 10 मिलियन पंक्तियों के अनुमान के साथ:

10 मिलियन पंक्तियाँ

मैं बिना उपयोग किए तालिका की वास्तविक सामग्री के लिए पंक्ति-पंक्ति कैसे रीसेट करूं WITH ROWCOUNT?

मैंने कोशिश की है WITH FULLSCAN, WITH RESAMPLEऔर WITH SAMPLE n ROWS, लेकिन आँकड़े rowcount 10 मिलियन पंक्तियों रहता है। एक पंक्ति सम्मिलित करना या सभी पंक्तियों को हटाना भी आँकड़ों को अद्यतन नहीं करता है, क्योंकि परिवर्तन बहुत छोटा है।

जवाबों:


15

विकल्प के DBCC UPDATEUSAGEसाथ उपयोग करें COUNT_ROWS

DBCC UPDATEUSAGE 
(   { database_name | database_id | 0 } 
    [ , { table_name | table_id | view_name | view_id } 
    [ , { index_name | index_id } ] ] 
) [ WITH [ NO_INFOMSGS ] [ , ] [ COUNT_ROWS ] ] 

प्रलेखन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.