2013-08-30 64 views
1

顯然有一些我不明白索引統計信息。剛剛創建的視圖上的非聚集索引,但獲取警告列未命中統計信息

我有一個包含數百萬行記錄的表格。 爲了提高性能,我創建了一個視圖和一個唯一聚集索引(必須因爲第一個索引必須是唯一聚集的)以及一個非聚集索引,以便能夠在索引中包含更多列。

現在我比較有和沒有這些索引和視圖的一些查詢的性能;我確實得到了更多的速度,讀取和CPU使用率也降低了。

但是,當我查看sql服務器應用的執行計劃時,我發現索引搜索關於該非聚集索引中的某些列缺少統計信息的警告;那些列也出現在我的where子句中,所以我認爲這裏可能還有一些性能需要改進。 執行計劃有兩列抱怨沒有統計數據;其中一個在非聚集索引內,另一個在該索引的include子句內。 反正我不明白這些統計數據如何仍然缺失。

例如在這裏http://msdn.microsoft.com/en-us/library/ms190397.aspx它聲明「查詢優化器在創建索引時爲表或視圖上的索引創建統計信息」。 嗯,我只是創建這些索引,並沒有行更新或插入自那時以來。 我也檢查並確保AUTO_UPDATE_STATISTICS以及AUTO_CREATE_STATISTICS已啓用,我在這裏錯過了什麼?

我還通過SQL Server Management Studio瞭解了該索引的統計數據:(展開視圖,然後右鍵點擊統計下的非聚集索引,然後選擇屬性) 在統計數據列之下,兩列中的一列可以是看到的(不在包含條款中的)。

我該如何擺脫這個警告,即創建/執行那些統計數據存在?

+0

什麼是視圖和查詢的定義是什麼? –

回答

0

嘗試使用此代碼創建的統計:

CREATE STATISTICS StatName 
ON dbo.IndexedView(ColumnName,...) 
WITH SAMPLE 25 PERCENT 
+0

感謝您的回答,您可以擴展一下,因爲正如我讀過的,平常情況下,建立索引時應該創建統計數據。爲什麼有必要手動進行? – DrCopyPaste

+0

我需要更多信息才能展開。你可以發佈XML計劃嗎? – PollusB