在某些情況下,表中資料較多,且分布不均勻的時候,執行計畫的估計行數往往會有很大偏差,因此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**清單2.建立過濾統計資訊statistics [filter_statistics]
on [sales].[salesorderdetail] (orderqty,productid)
where specialofferid = 1;
我們再來看執行計畫,如圖2所示。
圖2.應用過濾索引後估計的行數更準了
那麼,在調優語句的時候,我們想知道該語句是否使用了該過濾統計資訊,則可以通過跟蹤標記9204來檢視,**如**清單3所示。
select**清單3.使用跟蹤標記9204distinct
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返回的資訊我們看到過濾統計資訊已經被正確使用。
圖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...