GÜNCELLEME İSTATİSTİKLERİ sonrasında istatistikler nasıl sıfırlanır… ROWCOUNT İLE


11

Sorgu ayarlama ve test etme amacıyla, bir tablonun dizin istatistiklerine çalışarak manuel olarak bir satır sayısı ve sayfa sayısı atayabilirsiniz UPDATE STATISTICS. Ancak istatistikleri tablonun gerçek içeriğine nasıl yeniden hesaplar / sıfırlarsınız?

--- 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;

Sahte bir sorgu:

SELECT i%100, COUNT(*) FROM dbo.StatTest GROUP BY i%100;

... aşağıdaki sorgu planını döndürür (Dizin Taraması'ndaki satır tahmini 1024 satırdır).

10000 satır

UPDATE STATISTICSKomutu çalıştırın ..

UPDATE STATISTICS dbo.StatTest WITH ROWCOUNT=10000000;

... ve plan şu şekilde görünüyor, şimdi 10 milyon satırlık bir tahminle:

10 milyon sıra

Satır sayısını kullanmadan tablonun asıl içeriğine nasıl sıfırlayabilirim WITH ROWCOUNT?

Denedim WITH FULLSCAN, WITH RESAMPLEve WITH SAMPLE n ROWSistatistik satır sayısı 10 milyon satır olmaya devam ediyor. Bir satır eklemek veya hatta tüm satırları silmek istatistikleri güncellemez, çünkü değişiklik çok küçüktür.

Yanıtlar:


15

Seçeneği DBCC UPDATEUSAGEile kullanın 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 ] ] 

belgeleme

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.