標籤:索引 失效 log database 查詢 alter 統計資訊 維護 選項
統計資訊是如何提高SQLServer查詢效能的?統計長條圖用作在查詢執行計畫中查詢最佳化工具的選擇依據。如果一個查詢謂詞包含統計資訊的列,那麼查詢最佳化工具不需要預測該查詢中影響行數,因此,查詢最佳化工具有足夠的資訊去建立執行計畫。SQLServer建立執行計畫有一下幾種不同的方式:
- 統計資訊會在每個新建立的索引中自動建立統計資訊。
- 如果資料庫中AUTO_CREATE_STATISTICS被設定為ON,SQLServer將會自動對查詢中用到的,且沒有索引的列自動建立統計資訊。
在非常特殊的情況下,你不得不禁用這個有用的特性,可以使用以下方式關閉:
1、 使用sp_autostats來在表、索引或者統計對象上顯式並更改自動更新統計資訊選項。
2、 在表層級中,可以使用NORECOMPUTEoption of the UPDATE STATISTICS命令。
3、 你也可以在CREATESTATISTICS命令中使用NORECOMPUTE選項,但之後需要刪除並重建統計資訊。
4、 在CREATE INDEX命令中使用STATISTICS_NORECOMPUTE。
5、 在資料庫層級,可以使用以下命令來禁用:
|
ALTER DATABASE[你的庫名]
SET AUTO_UPDATE_STATISTICS OFF |
當使用資料庫層級的禁用時,表、索引或者統計對象的設定將全部失效。
何時更新統計資料?
如果你的查詢執行得很慢,那麼是時候更新統計資料了。並且建議當你插入大量資料到升序或者降序的列時,更新統計資料,因為在這種情況下,統計資訊長條圖將不包含新插入的值,同時,強烈建議在除索引維護(當你重建、整理片段或者重組索引時,資料分布不會改變)外的維護工作之後更新統計資料。
如果資料庫的資料更改頻繁,建議最低限度每天更新一次統計資訊。一般來說,在資料倉儲中,可以降低更新統計資料的頻率,當更新時,通常建議執行sp_updatestats預存程序來實現。
轉自:
http://blog.csdn.net/dba_huangzj/article/details/8041267
http://blog.csdn.net/column/details/sqlserverdba.html
sql server 統計資訊