亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

理解統計信息(1/6):密度向量

2024-07-21 02:47:01
字體:
來源:轉載
供稿:網友
理解統計信息(1/6):密度向量

在日常生活中,我們用統計信息來采取決定。SQL Server優化器也用同樣的方式,使用統計信息來選擇正確的執行計劃。如果統計信息錯誤或過期,SQL Server可能就會選擇錯誤的執行計劃。在這個文章里,我們換個方式理解下統計信息。

查詢優化器使用統計信息來判斷每一步返回的行。執行計劃里的估計行數信息是基于列的可用統計信息計算而來的。統計信息給我們列里數據分布情況。沒有統計信息,查詢優化器不能夠判斷不同計劃的效率。通過使用統計信息,查詢優化器在訪問數據時可以做出正確的選擇。

在我們定義索引時,統計信息會自動創建。除此之外,當列在查詢里被引用,作為WHERE條件的一部分,在group by子句里或join條件里,統計信息都會創建。為了自動創建統計信息,在數據庫層里的AUTO_CREATE_STATISTICS設置應該被啟用。默認情況下這個設置是被啟用的。除此之外,統計信息可以使用CREATE STATISTICS命令創建。

在SQL Server里存儲的統計數字是關于密度向量和直方圖(數據分布)的信息。在我們討論更多細節前,先理解這2個概念。

密度向量:在給出列或一組列唯一值的比例。統計密度向量的公式:1/列(或一組列)不同值個數。

密度向量用來衡量列的唯一性或列的選擇性。密度向量的值在0和1之間。如果這列的密度值為1,表示這列的所有記錄值一樣,選擇性低。更高的密度帶來更低的選擇性。如果這列的密度值為0.003,表示這列有1/0.003=333個不同值。

我們來看個例子,用下列語句創建表并在上面建立2個索引。

1 USE StatisticsDB2 GO3 4 SELECT * INTO SalesOrderDetail FROM AdventureWorks2008R2.Sales.SalesOrderDetail5 CREATE UNIQUE CLUSTERED INDEX ix_SalesOrderDetailID ON SalesOrderDetail(SalesOrderDetailID)6 CREATE NONCLUSTERED INDEX ix_PRoductid ON SalesOrderDetail(productid)

我們來看看這2個索引的統計信息。

1 DBCC SHOW_STATISTICS('dbo.SalesOrderDetail', 'ix_SalesOrderDetailID')

輸出結果有3個表,分別是:統計信息頭,密度向量和直方圖。

在第1部分(統計信息頭)

  • Name:索引名稱
  • Updated:統計信息更新時間
  • Rows:索引里行數目。不是表里的行數。
  • Rows Sampled :用于生成統計信息的采樣行數。創建索引的時候,會進行完全掃描。
  • Steps:直方圖里的步長。(第3部分的內容)
  • Density:在SQL Server里不再使用,向老版本兼容。
  • Average key length:索引鍵平均長度。
  • String Index:用于like時估計統計行數。
  • Filter Expression:過濾索引表達式
  • Unfiltered Rows :未過濾的行數,如果不存在過濾索引,則等同于Row列。

可以使用DBCC SHOW_STATISTICS加WITH STAT_HEADER來只獲取統計頭信息。

在第2部分的密度表,我們只看到一條記錄,因為在我們索引里只有1列。

所有密度列給我們SalesOrderDetailsId列的密度值(1/列(或一組列)不同值個數)。所有密度列給我們值 8.242868E-06 =0.000008242868。這表示SalesOrderDetailsId列有 1/0.000008242868=121317個唯一值,我們可以用下列語句驗證下。

1 SELECT COUNT(DISTINCT SalesOrderDetailID ) FROM SalesOrderDetail

可以使用DBCC SHOW_STATISTICS加WITH DENSITY_VECTOR來只獲取密度向量信息。

我們來看看非聚集索引ix_productid的密度。

1 DBCC SHOW_STATISTICS('dbo.SalesOrderDetail', 'ix_productid') WITH DENSITY_VECTOR

在密度表里可以看到2行記錄,即使我們的非聚集索引是在單列上。這是因為聚集鍵是非聚集索引的一部分(參見索引深入淺出(4/10):非聚集索引的B樹結構在聚集表)。

第一行告訴我們,ProductID列的密度向量值為0.003759399,換句話說,在ProductID列有1/0.003759399=226個唯一值。我們可以驗證下。

1 SELECT COUNT(DISTINCT ProductID) FROM dbo.SalesOrderDetail

第二行告訴我們,ProductID和SalesOrderDetailID組合列的密度向量值是0.000008242868,換句話說,ProductID和SalesOrderDetailID組合列有121317個唯一值,這個和表的總記錄數是一致的。

密度向量值會用在哪里呢,我們看下下面查詢的執行計劃,點擊工具欄的顯示包含實際的執行計劃。

1 SELECT ProductID,COUNT(*) FROM dbo.SalesOrderDetail GROUP BY ProductID

在執行計劃里,在流聚合運算符的輸出里,我們看到估計行數是266。在ProductID列唯一值(個數)可以從密度表里拿到。但我們怎么證明查詢優化器是用這個值來計算估計行數。我們創建另外一個沒有任何索引的SalesOrderDetail表。

1 SELECT * INTO SalesOrderDetail_NoStats FROM SalesOrderDetail

通過下面語句我們可以看出,這表沒有任何的統計信息。

1 EXEC SP_HELPSTATS 'SalesOrderDetail_NoStats', 'ALL'

我們再看下這個表的剛才查詢,點擊工具欄的顯示包含實際的執行計劃:

1 SELECT ProductID,COUNT(*) FROM dbo.SalesOrderDetail_NoStats GROUP BY ProductID

在沒有任何統計索引和統計信息的情況下,優化器再一次在流聚合運算符的輸出里估計行數是266。我們再次檢查下這個表的統計信息。

1 EXEC SP_HELPSTATS 'SalesOrderDetail_NoStats', 'ALL'

是的,在估計執行計劃是,SQL Server在productID列創建了統計信息來幫助優化器選擇正確的執行計劃。我們來看看這個統計信息的詳情。

1 DBCC SHOW_STATISTICS('dbo.SalesOrderDetail_NoStats', '_WA_Sys_00000005_7E6CC920') 

在統計信息頭,我們注意到Rows Sampled值比Rows值小。這是因為在自動創建統計信息時,SQL Server沒有掃描整個表,只掃描了表的樣本。為什么會這樣在接下來的文章里會談到。簡而言之,在非聚集索引字段里,統計信息幫助優化器在每一步操作時判斷估計行數,什么樣的連接是合適的,還有在計劃中的執行順序。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲在线视频福利| 精品日本美女福利在线观看| 国产精品一区二区久久国产| 欧美精品日韩三级| 日韩精品一区二区三区第95| 久久久国产一区二区三区| 91av在线网站| 日本欧美在线视频| 国产精品美女主播在线观看纯欲| 精品精品国产国产自在线| 亚洲国产欧美一区| 久久99亚洲精品| 欧美激情视频在线观看| 国产专区精品视频| 国产亚洲xxx| 日韩成人在线视频观看| 国产精品一区二区三区久久久| 国产精品天天狠天天看| 国产a∨精品一区二区三区不卡| 亚洲第一页在线| 日韩av电影院| 69av成年福利视频| 国产这里只有精品| 亚洲精品成人网| 91精品视频免费看| 国内精品久久久久久久| 91网在线免费观看| 国产精品视频在线观看| 日韩欧美国产免费播放| 久久亚洲精品小早川怜子66| 欧美综合在线第二页| 91chinesevideo永久地址| 久久精品亚洲一区| 九九视频直播综合网| 国产一区二区香蕉| 日本亚洲欧洲色α| 日韩高清av在线| 亚洲精品在线看| 日韩av电影在线网| 日韩av在线精品| 色天天综合狠狠色| 正在播放亚洲1区| 国产午夜精品全部视频在线播放| 国产在线视频91| 欧美中文字幕视频在线观看| 91免费欧美精品| 亚洲男人天堂九九视频| 亚洲电影免费观看高清完整版在线| 欧美成人免费在线视频| 亚洲人av在线影院| 日韩高清不卡av| 国产精品久在线观看| 日韩精品亚洲精品| 国产精品视频永久免费播放| 欧美一级在线亚洲天堂| 亚洲精品成人av| 精品国产31久久久久久| 久久久久久久97| 欧美激情精品久久久久久蜜臀| 91精品国产综合久久香蕉922| 97国产suv精品一区二区62| 欧美成人免费va影院高清| 欧美性jizz18性欧美| 色婷婷**av毛片一区| 日韩av免费网站| 国产精品福利片| 色老头一区二区三区在线观看| 亚洲精品视频播放| 亚洲一区av在线播放| 精品亚洲国产视频| 日韩欧美国产高清91| 日韩av片免费在线观看| 亚洲第一区第一页| 亚洲精品国产综合久久| 亚洲丝袜av一区| 国产日韩综合一区二区性色av| 亚洲欧美第一页| 国产91精品黑色丝袜高跟鞋| 日韩美女av在线免费观看| 欧美激情第1页| 日韩精品有码在线观看| 57pao成人永久免费视频| 日韩视频免费中文字幕| 亚洲欧美日韩中文视频| 久久久久国产一区二区三区| 少妇激情综合网| 国产自摸综合网| 日韩黄色在线免费观看| 日韩美女在线观看一区| 热99在线视频| 国产视频观看一区| 日韩一二三在线视频播| 国产成人欧美在线观看| 欧美黑人又粗大| 久久影院资源站| 国产一区二中文字幕在线看| 亚洲美女又黄又爽在线观看| 国产九九精品视频| 久久久精品一区二区| 亚洲国产精品yw在线观看| 91久久精品久久国产性色也91| 精品中文字幕视频| 亚洲经典中文字幕| 尤物九九久久国产精品的特点| 欧美视频不卡中文| 久久精品久久久久电影| 久久中文精品视频| y97精品国产97久久久久久| 国产精品久久久久av免费| 成人国产亚洲精品a区天堂华泰| 97视频在线观看亚洲| 日韩精品久久久久久福利| 97国产成人精品视频| 国产精品一二三视频| 91精品久久久久久久久久入口| 黑人狂躁日本妞一区二区三区| 国产亚洲精品激情久久| 青青草成人在线| 97激碰免费视频| 亚洲精品久久久久| 国产精品jizz在线观看麻豆| 亚洲午夜av久久乱码| 国产精品草莓在线免费观看| 2018日韩中文字幕| 91福利视频网| 色婷婷av一区二区三区久久| 国产精品三级网站| 欧美精品久久久久久久久久| 国内精品模特av私拍在线观看| 色综合伊人色综合网| 欧美精品日韩www.p站| 亚洲成人精品av| 日韩电影中文字幕一区| 精品成人69xx.xyz| 孩xxxx性bbbb欧美| 日韩欧美亚洲成人| 中文字幕一区日韩电影| 国产精品入口福利| 国产成人高潮免费观看精品| 国产一区二区三区视频免费| 久久艳片www.17c.com| 国产aⅴ夜夜欢一区二区三区| 亚洲男人的天堂在线播放| www.国产精品一二区| 一个色综合导航| 日韩欧美在线视频免费观看| 亚洲综合在线播放| 国产精品户外野外| 98精品国产自产在线观看| 97在线日本国产| 国产精品日韩在线一区| 欧美成aaa人片在线观看蜜臀| 欧美大奶子在线| 欧美三级xxx| 国产精品欧美久久久| 91九色国产在线| 欧美午夜电影在线| 欧洲精品在线视频| 国产suv精品一区二区| 精品国产区一区二区三区在线观看| 欧美日韩国产黄| 亚洲天堂成人在线| 亚洲人成网站在线播| 国产精品第七十二页|