淺談SQL Server中統計對于查詢的影響分析建站知識
導讀:1建站知識SQL Server查詢分析器是基于開銷的。通常來講,查詢分析器會根據謂詞來確定該如何選擇高效的查詢路線,比如該選擇哪高端網站建設建設網站公司。
而每次查詢分析器尋找路徑時,并不會每一次都去統計索引中包含的行數,值的范圍等,而是根據一定條件創建和更新這些信息后保存到數據庫中,這也就是所謂的統計信息。 如何查看統計信息 查看SQL Server的統計信息非常簡單,使用如下指令: DBCC SHOW_STATISTICS('表名','索引名')所得到的結果如圖1所示。
統計信息如何影響查詢
下面我們通過一個簡單的例子來看統計信息是如何影響查詢分析器。我建立一個測試表,有兩個INT值的列,其中id為自增,ref上建立非聚集索引,插入100條數據,從1到100,再插入9900條等于100的數據。圖1中的統計信息就是示例數據的統計信息。
此時,我where后使用ref值作為查詢條件,但是給定不同的值,我們可以看出根據統計信息,查詢分析器做出了不同的選擇,如圖2所示。
where id= 12345 where monthly_sales < 10000 / 12 where name like “Careyson” + “%”
但是對于比如
where price = @vari where total_sales > (select sum(qty) from sales) where a.id =b.ref_id
where col1 =1 and col2=2
這類在運行時才能知道值的查詢,采樣步長就明顯不是那么好用了。另外,上面第四行如果謂詞是兩個查詢條件,使用采樣步長也并不好用。因為無論索引有多少列,采樣步長僅僅存儲索引的第一列。當柱狀圖不再好用時,SQL Server使用密度來確定最佳的查詢路線。
密度的公式是:1/表中唯一值的 個建設網站數。當密度越小時,索引越容易被選中。比如圖1中的第二個表,我們可以通過如下公式來計算一下密度:
根據公式可以推斷,當表中營銷型網站建設的數據量逐漸增大時,密度會越來越網站seo優化培訓小。
對于那些不能根據采樣步長做出選擇的查詢,查詢分析器使用密度來估計行數,這個公式為:估計的行數=表中的行數*密度
那么,根據這個公式,如果我做查詢時,估計的行數就會為如圖4所示的數字。
我們來驗證一下這個結論,如圖5所示。
因此,可以看出,估計的行數是和實際的行數有出入的,當數據分布均勻時,或者數據量大時,這個誤差將會變的非常小。
統計信息的更新由上面的例子可以看到,查詢分析器由于依賴于統計信息進行查詢,那么過時的統計信息則可能導致低效率的查詢。統計信息既可以由SQL Server來進行管理,也可以手動進行更新,也可以由SQL Server管理更新時手動更新。
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章淺談SQL Server中統計對于查詢的影響分析建站知識主要講述淺談,標簽,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_5552.html