1, 什麼是統計信息
以下是官方的對統計信息的描述:
按照默認設置,如果表中的某列沒有索引,則SQL Server會自動爲該列創建統計。然後,查詢優化器評估該列中數據分佈範圍的統計信息,以選擇一個更爲有效的查詢處理方案。分辨自動創建的統計很簡單,在SQL Server 7.0和SQL Server 2000中,自動創建的統計的前綴爲_WA_Sys。
個人感想:
以前對_WA_Sys開頭的統計信息一直不知道有什麼用,在學習了oracle時的CBO和三個算法(嵌套循環,合併連接和hash連接)才發現這個_WA_Sys開頭的統計信息和索引的統計信息對我們用戶沒用,對數據庫是很重要的。
2, 統計信息內容:
運行上面命令以後,出來下列信息:
這裏的信息說明:
name:統計信息的名稱。 Updated :上一次更新統計信息的日期和時間
Rows :表中的行數。 Rows Sampled :統計信息的抽樣行數。
Steps:分發步驟數(在sql server最多200步) Average key length :所有索引列的平均長度
這些信息是對統計信息一個彙總
還有下列信息:
All density :索引列前綴集的選擇性(頻繁) Average Length :索引列前綴集的平均長度。 Columns:索引列前綴的名稱
還有包括數據統計的直方圖信息:
3, 統計信息的作用:
1, index建立後,優化器是否使用該index,優化器需要藉助一些統計信息來做判斷
2,根據統計信息,預估採用嵌套循環連接,合併連接, 哈希連接等哪一個連接
3,根據統計信息判斷表的估計最佳的成本(最佳的執行順序),
4, 統計信息自動建立:
1,建立索引後,就會出現一個同名的統計信息
2,一個列沒有統計信息,這時用他來關聯表和查詢數據,這時,系統會在評估最佳查詢計劃前,生成一個該列的"_WA_Sys"的統計信息。
如下圖:這裏就包含(索引統計信息和列的統計信息)
統計信息的更新和維護,由於數據的經常改變,統計信息是由sql server 2005自動維護的。可以手工更新統計信息:
更新表的統計信息,採集表中該列的全部數據。一般建議採用全部數據採集。保證統計信息的正確性
5, 統計信息的設置
系統是如何來設置更新和創建統計信息的?
原來在創建數據庫時,系統自動設置了統計信息的屬性。這兩個屬性一般不要手工改動