查詢優化器

starive發表於2015-05-08


查詢優化器


一   查詢過程




二   查詢優化器

2.1 產生執行計劃
 <1>  評估每個計劃的開銷
 <2>  查詢執行及計劃快取
 <3>  提示

2.2  連線
 <1> 連線順序
        優化器在決定相關關聯的時候,需要考慮兩個方面:
        第一  關聯順序的選擇
        第二  關聯演算法的選擇
 <2> 連線種類       
         巢狀迴圈、合併聯接、雜湊聯接


三  執行引擎

3.1  資料訪問操作
  <1> 掃描
  <2> 查詢
  <3> 書籤查詢


3.2  聚合操作
  <1> 排序和雜湊
  <2>  流聚合
  <3> Hash聚合

3.3 並行操作

四  統計資訊和開銷預估

4.1 統計資訊
   <1> 建立和更新統計資訊
   <2> 檢查統計物件
          通過sys.stats目錄檢視來檢視某個物件的統計資訊情況,示例如下:
         
  1. select *from sys.stats
  2. where object_id = object_id('Sales.SalesOrderDetail')

4.2  統計資訊維護

4.3  計算列上的統計資訊

4.4 過濾索引上的統計資訊
     當建立過濾索引時,會自動建立對應的統計資訊,也可以通過在 create statistics 語句中加上 where子句來實現。
  
  1. create statistics California
  2. on Person.Address(City)
  3. where StateProvinceID=9

4.5  預估數量錯誤

  1. set statistics profile on
  2. go

  3. select *from sales.salesorderdetail
  4. where orderqty * unitprice > 10000
  5. go

  6. set statistics profile off
  7. go

4.6  更新統計資訊
   
  1. update statistics dbo.Address with rowcount = 1000000, pagecount = 100000

 

五  優化器工作過程

   優化器的工作過程分為: 簡化、簡單計劃優化和完整計劃優化


1. 簡化

2. 簡單計劃優化

3. 完整計劃優化

4.  優化過程

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26435490/viewspace-1629795/,如需轉載,請註明出處,否則將追究法律責任。

相關文章