顯示具有 SQL 2012(RC) 標籤的文章。 顯示所有文章
顯示具有 SQL 2012(RC) 標籤的文章。 顯示所有文章

2012年3月2日 星期五

[查詢優化]影響執行計畫的因素4-Selectivity(選擇性)


        選擇性是一種獨特性的衡量,大多用來描述述詞,如果要計算的話就是符合資料列/總資料列的比率

        假設有個員工資料表,總共100位員工,男女各半,資料表上有ID(身分證或護照)及性別欄位,如果述詞為" ID= '某個員工ID' ",可以預期只會回傳一個員工,選擇性為1/100=0.01,表示有較高的獨特性,所以ID欄位有高選擇性,如果述詞為" 性別 = '男生' ",可以預期將會回傳50位員工,選擇性為50/100=0.5,有較低的獨特性,所以性別欄位的是低選擇性

        大資料裡找小資料,使用索引是很有效率的,所以通常述詞裡有高選擇性欄位,就很適合拿來做選索引欄位囉,像前述所提的ID欄位,很適合拿來做索引欄位,性別欄位就較不適合囉

2012年1月8日 星期日

[查詢優化]影響執行計畫的因素3-Cardinality(基數)

   基數是用來量測滿足某個條件下的資料列數目,想像一下,如果一個員工資料表總共有500筆資料,這個資料表有單位、姓名及ID等欄位,有一個查詢的條件是"WHERE 單位 = '資訊處' ",那查詢最佳化工具就會找[單位]的統計資料,結果發現直方圖為[資訊處]有50筆,這50筆就是所謂的基數

  有沒有覺得這個基數很熟悉,沒錯,在執行計畫裡,我們可以把每個運算子的估計的資料列數目當作是基數喔

  有時查詢最佳化工具沒法正確的預估基數,使得執行計畫的成本估計不正確,會導致選擇次佳的執行計畫呢

2011年12月11日 星期日

[查詢優化]影響執行計畫的因素2-Density(密度)

   上篇介紹了述詞,本篇接著介紹另一個影響執行計畫的因素-Density(密度),密度是用來描述欄位其重複值發生的頻率,密度介於0到1之間,欄位密度愈高代表唯一值的數量愈少,在既定的查詢下會回傳愈多的資料

公式如右:  Density(密度) = 平均重複筆數/總筆數

也就是如右圖:

最後上下抵銷掉就是:  Density(密度) = 1 / 唯一鍵值的筆數