使用跟蹤標記檢視過濾統計資訊是否被使用

2021-09-06 19:06:42 字數 1471 閱讀 4138

在某些情況下,表中資料較多,且分布不均勻的時候,執行計畫的估計行數往往會有很大偏差,因此sql server 2008引入了過濾統計資訊,意味著只對錶中的特定資料計算統計資訊。那麼在調優查詢的過程中如何知道語句是否使用了過濾統計資訊呢?sql server提供了乙個隱藏的跟蹤標記來支援這一過程。下面demo可以展示如何使用該跟蹤標記。

我們首先對adventureworks的salesorderdetail做乙個簡單的查詢,**如**清單1所示。

distinct

orderqty,productid,specialofferid

from [adventureworks].[sales].[salesorderdetail] as c

where [c].orderqty = 1

and [c].productid = 800

and [c].specialofferid = 1

**清單1.乙個簡單的查詢

我們來看對應的執行計畫,如圖1所示。

圖1.估計的行數為264.474實際的行數為328

因此,針對該特定查詢,我們建立過濾統計資訊,**如**清單2所示。

create

statistics [filter_statistics]

on [sales].[salesorderdetail] (orderqty,productid)

where specialofferid = 1;

**清單2.建立過濾統計資訊

我們再來看執行計畫,如圖2所示。

圖2.應用過濾索引後估計的行數更準了

那麼,在調優語句的時候,我們想知道該語句是否使用了該過濾統計資訊,則可以通過跟蹤標記9204來檢視,**如**清單3所示。

select

distinct

orderqty,productid,specialofferid

from [adventureworks].[sales].[salesorderdetail] as c

where [c].orderqty = 1

and [c].productid = 800

and [c].specialofferid = 1

option ( querytraceon 3604, querytraceon 9204);

**清單3.使用跟蹤標記9204

通過圖3返回的資訊我們看到過濾統計資訊已經被正確使用。

圖3.已經正確使用過濾統計資訊

使用跟蹤標記檢視過濾統計資訊是否被使用

在某些情況下,表中資料較多,且分布不均勻的時候,執行計畫的估計行數往往會有很大偏差,因此sql server 2008引入了過濾統計資訊,意味著只對錶中的特定資料計算統計資訊。那麼在調優查詢的過程中如何知道語句是否使用了過濾統計資訊呢?sql server提供了乙個隱藏的跟蹤標記來支援這一過程。下面...

跟蹤標記 相關使用

啟用指定的跟蹤標記。dbcc traceon trace n 1 with no infomsgs 禁用指定的跟蹤標記。dbcc traceoff trace n 1 with no infomsgs 顯示跟蹤標誌的狀態。dbcc tracestatus trace n 1 with no info...

Android日誌分類及檢視過濾

一 log分類 android日誌主要分為kernel radio event main這四種log。1 kernel log kernel log屬於linux核心的log 可以通過讀取 proc kmsg或者通過串列埠來抓取。adb 抓取kernel log的命令如下 需要有root許可權 ad...