SQL Server 自動更新統(tǒng)計信息的基本算法 |
發(fā)布時間: 2012/9/7 17:06:53 |
最初接觸SQL Server的時候認為SQLServer數據更改的同時就會相應的更新統(tǒng)計信息,其實SQL Server不是這樣做的.基于性能考慮,SQL Server使用下面的算法更新統(tǒng)計信息。 自動更新統(tǒng)計信息的基本算法是: · 如果表格是在 tempdb 數據庫表的基數是小于 6,自動更新到表的每個六個修改。- · 如果表的基數是大于 6,但小于或等于 500,更新狀態(tài)每 500 的修改。 注意:此嚴格意義上講,SQL Server 計算基數為表中的行數。 注意:除了基數,該謂語的選擇性也會影響 AutoStats 生成。這意味著該統(tǒng)計信息可能無法更新的 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.
本文出自:億恩科技【1tcdy.com】 |