在幫助優化器選擇正確的執行計劃,統計信息是一個重要因素。因此,我們在處理性能問題時,要足夠重視統計信息。可能是對統計信息知識及其相關機制的缺乏,忽略統計信息往往是造成性能問題的根源。
查詢優化器在每一步使用統計信息判斷返回的行數。在執行計劃里的預估行數信息是基于列上的可用統計信息計算而來的。統計信息會給我們列上數據分布信息。沒有統計信息,查詢優化器不能判斷不同計劃的效率。通過使用統計信息里的內容,查詢優化器在訪問數據的時候就可以做出正確選擇。
在SQL Server里存儲的統計信息包括密度和直方圖:
有2類統計信息,索引統計信息和列統計信息。在表上定義索引時,索引統計信息會自動創建。列統計信息總是在單列,當在查詢里列被引用時,列統計信息會自動創建。為了自動創建列統計信息,在數據庫屬性里可以將自動創建統計信息設置為啟用。在理解統計信息(3/6):誰創建和管理統計信息?在性能調優中,統計信息的作用里我們詳細討論了統計信息是如何創建的,自動更新和創建統計信息是如何工作的,過期的統計信息如何影響我們的性能。
在表里發生合理的變化后,SQL Server會自動更新統計信息。這里有個閥限值來觸發自動更新統計信息。默認的閥值對最優性能是否足夠好?我們真的需要通過人為更新統計信息來干預自動更新統計信息么?看看理解統計信息(4/6):自動更新統計信息的閥值——人為更新統計信息的重要性就知道答案了。
在SQL Server 2005和SQL Server 2008里,辨別統計信息是否需要人為更新是個很困難的事,理解統計信息(5/6):如何檢測過期的統計信息可以給你一些如何開始的想法。
額外贈送統計信息內幕:直方圖和密度向量。
新聞熱點
疑難解答