使用していますSQL SERVER 2012
私は私の持っているAuto Update Stats
ONを自分のデータベースに。
下記のリンクから、自動更新の統計情報がSQRT(1000 * Table rows)
テーブルの行が変更されるたびに発生することがわかりました。
https://blogs.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistics-explained/
1000レコードのテーブルを作成しました
SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
name
INTO stst
FROM sys.objects
統計の作成
CREATE STATISTICS rn
ON stst (rn)
CREATE STATISTICS name
ON stst (name)
作成した統計の確認
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
式に従って
select SQRT(1000 * 500) -- 707.106781186548
707.106781186548
テーブルにレコードを追加/変更すると、自動更新統計が起動するはずです
1000
発砲するのに十分以上のレコードをテーブルに追加しますauto update stats
INSERT INTO stst(rn,name)
SELECT TOP 1000 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
a.name
FROM sys.objects a
を発射するには auto update stats
Select * from stst
統計の確認
DBCC show_statistics('stst', rn) -- Rows 500
DBCC show_statistics('stst', name) -- Rows 500
残念ながら、まだRows
ある500
のみ。
1000
レコードをテーブルに挿入した後でも、統計の自動更新が起動しなかった理由707.106781186548
を実行してSELECT
いるときよりも明らかに大きいですか?ここで何が欠けていますか