2008-09-25 89 views

回答

4
exec sp_updatestats 

是的,如果您發現查詢的表現不盡如人意,更新統計信息會非常有幫助。這通過檢查查詢計劃來證明,並且例如在執行表掃描或索引掃描而不是索引查找時發現。所有這些都假定你已經正確設置了你的索引。

也有UPDATE STATISTICS命令,但我個人從未使用過。

+0

來自BOL:sp_updatestats通過指定ALL關鍵字,有效地執行UPDATE STATISTICS對數據庫中的所有用戶定義和內部表。 – 2008-09-25 07:50:40

3

通常將統計信息更新添加到維護計劃中(如在企業管理器定義的維護計劃中)。這樣它就按計劃發生 - 每天,每週,不管。

SQL Server 2000使用統計信息做出有關查詢執行的良好決策,所以它們肯定有幫助。

這是在同一時間(DBCC DBREINDEX和DBCC INDEXDEFRAG),以重建索引是一個好主意。

1

更新統計下列事件後,有必要:
- 記錄插入到表
- 記錄被從表中刪除
- 記錄在你的餐桌

更新。如果你有一個大型數據庫數百萬條記錄每天都會獲得大量的寫入數據,因此您可能應該確定非高峯時間來安排索引更新。

另外,您需要考慮您的流量類型。如果表中有很多(百萬)記錄,並且有很多外鍵相關性,並且讀取的寫入比例較大,則可能需要考慮關閉自動統計重新計算(注意:此功能將在未來版本的SQL Server,但對於SQL Server 2000,您應該可以)。這告訴引擎不要重新計算每個INSERT,DELETE或UPDATE的統計信息,並使這些操作更高效。

索引不是笑事。它們是高性能數據庫的核心和靈魂。

2

如果重建索引,那麼這些索引的統計信息會自動重建。 如果您的時間表允許,那麼運行UPDATE STATISTICS部分維護計劃是一個好主意,就像夜間一樣頻繁(如果您的索引重建頻率低於此頻率)。

SQL Server:要確定過時的統計數據是否導致查詢執行效果不佳,請在Management Studio中打開「Query-> Display Estimated Execution Plan」(CTRL-L)並運行查詢。打開另一個窗口,粘貼相同的查詢,然後在Management Studio中打開「查詢 - >顯示ActualExecution計劃」(CTRL-M),然後重新運行查詢。如果執行計劃不同,統計數據很可能會過時。

相關問題