Sql-Server
找不到新創建的表的列統計資訊
由於達到門檻值(500 + 20%的修改)時觸發的自動更新統計資訊,我正在嘗試模擬計劃重新編譯。
數據庫目前設置為:
我從創建一個簡單的表開始:
create table recomp(num int) go
然後我插入一些行:
insert into recomp values (5) go 100
並在 5 次以下執行我的查詢(我使用where 1 = (select 1))進行全面優化:
select * from recomp where 1 = (select 1)
在我的計劃記憶體中,我有以下內容:
現在有趣的部分是,我再次插入新行以觸發 recomp 表的num列的自動更新統計資訊:
insert into recomp values (8) go 500
這裡 num 列的統計資訊已更新。接下來我要做的是執行我的選擇查詢:
select * from recomp where 1 = (select 1)
當我檢查我的計劃記憶體時:
和一個擷取重新編譯的事件:
我的問題是:我在哪裡可以找到num列的統計資訊?
優化器不需要任何統計數據來優化這些查詢,因此不會創建任何查詢。
當自動創建統計資訊選項 AUTO_CREATE_STATISTICS 為 ON 時,查詢優化器會根據需要在查詢謂詞中的各個列上創建統計資訊,以改進查詢計劃的基數估計。
嘗試類似的東西
select * from recomp where num = 4
您應該會看到創建的統計資訊。