আপডেটের পরিসংখ্যানের পরে পরিসংখ্যানগুলিকে কীভাবে পুনরায় সেট করবেন… সারি দিয়ে


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, তবে পরিসংখ্যানের সারি গণনা 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 ] ] 

নথিপত্র

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.