---查詢索引操作的資訊
select * from sys.dm_db_index_usage_stats
--查詢指定表的統計資訊(sys.stats和sysobjects聯集查詢)
select
o.name,--表名
s.name,--統計資訊的名稱
auto_created,--統計資訊是否由查詢處理器自動建立
user_created--統計資訊是否由使用者顯示建立
from
sys.stats
inner join
sysobjects o
on
s.object_id=o.id
where
o.name='表名'
go
--查看統計資訊中列的資訊
select
o.name,--表名
s.name,--統計資訊的名稱
sc.stats_column_id,
c.name---列名
from
sys.stats_columns sc
inner join
sysobjects o
on
sc.object_id=o.id
inner join
sys.stats s
on
sc.stats_id=s.stats_id and sc.object_id=s.object_id
inner join
sys.columns c
on
sc.column_id=c.column_id and sc.object_id=c.object_id
where
o.name='表名'
--查看統計資訊的明細資訊
dbcc show_statistics
--查看索引自動建立的統計資訊
exec sp_autostats '對象名'
--關閉自動產生統計資訊的資料庫選項
alter datebase 資料庫名 set auto_create_statistics off
--建立統計資訊
create statistics 統計資訊名稱 on 表名(列名)
[with
[[fullscan
sample number{percent|rows}]
[norecompute]
]
go
解釋一下上面的參數:
fullscan:指定對錶或視圖中所有的行收集統計資訊
sample number{percent|rows}:指定隨機抽樣應讀取的資料行數或者百分比 sample選項不能與fullscan選項同時使用
norecompute:指定資料庫引擎不自動重新計算統計資訊
--計算隨機抽樣統計資訊
create statistics 統計資訊名稱 on 表名(列名)
with sample 5 percent---建立統計資訊,按5%計算隨機抽樣統計資訊
go
--建立統計資訊
exec sp_createstats--參數自己去查下協助,在這裡不一一列舉
--修改統計資訊
update statistics 表名|視圖名
索引名|統計資訊名,索引名|統計資訊名,.....
[with
[[fullscan
sample number{percent|rows}]
[norecompute]
]
---參數與create statistics 語句相似,下面介紹幾種常用應用
1.更新指定表的所有統計資訊
update statistics 表名
2.更新指定表的單個索引的統計資訊
update statistics 表名 索引名
3.對錶進行全面掃描,更新統計資料
update statistics 表名(列名) with fullscan