查詢優化器
查詢優化器
一 查詢過程
二 查詢優化器
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目錄檢視來檢視某個物件的統計資訊情況,示例如下:
-
select *from sys.stats
- where object_id = object_id('Sales.SalesOrderDetail')
4.2 統計資訊維護
4.3 計算列上的統計資訊
4.4 過濾索引上的統計資訊
當建立過濾索引時,會自動建立對應的統計資訊,也可以通過在 create statistics 語句中加上 where子句來實現。
-
create statistics California
-
on Person.Address(City)
- where StateProvinceID=9
4.5 預估數量錯誤
-
set statistics profile on
-
go
-
-
select *from sales.salesorderdetail
-
where orderqty * unitprice > 10000
-
go
-
-
set statistics profile off
- go
4.6 更新統計資訊
- update statistics dbo.Address with rowcount = 1000000, pagecount = 100000
五 優化器工作過程
優化器的工作過程分為: 簡化、簡單計劃優化和完整計劃優化1. 簡化
2. 簡單計劃優化
3. 完整計劃優化
4. 優化過程
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26435490/viewspace-1629795/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 查詢優化優化
- pgsql查詢優化之模糊查詢SQL優化
- Oracle in 查詢優化Oracle優化
- MySQL查詢優化MySql優化
- join 查詢優化優化
- HBase查詢優化優化
- SQL查詢優化SQL優化
- Mysql優化系列之——優化器對子查詢的處理MySql優化
- [玩轉MySQL之六]MySQL查詢優化器MySql優化
- Oracle查詢優化器的相關引數Oracle優化
- MySQL 的查詢優化MySql優化
- 分頁查詢優化優化
- MySQL 慢查詢優化MySql優化
- KunlunDB 查詢優化(一)優化
- MySQL優化COUNT()查詢MySql優化
- 優化sql查詢速度優化SQL
- EntityFramework優化:查詢效能Framework優化
- EntityFramework優化:查詢WITH(NOLOCK)Framework優化
- 優化星型查詢優化
- mysql查詢優化檢查 explainMySql優化AI
- MySQL調優之查詢優化MySql優化
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- TiDB 查詢優化及調優系列(一)TiDB 優化器簡介TiDB優化
- 通過攔截器Interceptor優化Mybatis的in查詢優化MyBatis
- Oracle 優化器與sql查詢執行順序Oracle優化SQL
- MySQL-效能優化-索引和查詢優化MySql優化索引
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- MySQL查詢優化利刃-EXPLAINMySql優化AI
- exists與in子查詢優化優化
- MySQL索引與查詢優化MySql索引優化
- 效能優化之分頁查詢優化
- APP查詢圖片優化APP優化
- MySQL分頁查詢優化MySql優化
- 資料庫查詢優化資料庫優化
- mysql關聯查詢優化MySql優化
- SQL Server 查詢優化功能SQLServer優化
- 全文查詢的效能優化優化
- SQL查詢優化的方法SQL優化