自動更新統計信息的基本算法是:
· 如果表格是在 tempdb 數據庫表的基數是小於 6,自動更新到表的每個六個修改。
· 如果表的基數是大於 6,但小於或等於 500,更新狀態每 500 的修改。
· 如果基數大於 500,表為更新統計信息時(500 + 20%的表)發生了更改。
· 表變量為基數的更改不會觸發自動更新統計信息。
注意:此嚴格意義上講,SQL Server 計算基數為表中的行數。
注意:除了基數,該謂語的選擇性也會影響 AutoStats 生成。這意味著該統計信息可能無法更新的 afer 每 500 修改基數是 < 500 或更改的每個 20%的基數好像 > 500。比例因子(值的范圍從 1 到 4、 1 和 4 之間)上生成根據選擇性,這一因素的更改從算法獲得數的乘積 AutoStats 生成所需的修改的實際數目。
在表的窗體中,可以summarised 以上算法:
_________________________________________________________________________________
Table Type | Empty Condition | Threshold WhenEmpty |Threshold When Not Empty
_________________________________________________________________________________
Permanent | < 500 rows | # ofChanges >= 500 | # of Changes >=500 + (20% of Cardinality)
___________________________________________________________________________
Temporary | < 6 rows | # ofChanges >= 6 | # of Changes >=500 + (20% of Cardinality)
___________________________________________________________________________
Table
Variables | Change in cardinality does not affectAutoStats generation.
___________________________________________________________________________
作者 SmithLiu328