Sql-Server

找不到新創建的表的列統計資訊

  • May 28, 2020

由於達到門檻值(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 時,查詢優化器會根據需要在查詢謂詞中的各個列上創建統計資訊,以改進查詢計劃的基數估計。

AUTO_CREATE_STATISTICS 選項

嘗試類似的東西

select *
from recomp
where num = 4

您應該會看到創建的統計資訊。

引用自:https://dba.stackexchange.com/questions/268001