DB優化小常識 - 執行計劃中Cardinality的計算
DB中如果我們使用CBO作為優化器,一條SQl語句就會有多種執行路徑,那麼CBO會計算各個執行路徑的訪問代價,選擇代價最小的作為我們的執行計劃。CBO在做訪問路徑估算的時候有一個很重要的引數作為我們計算Cost的因數,這個就是我們通常所說的掃描欄位的集的勢(Cardinality) 。
一般公式如下:
Cardinality=MAX(Cardinality Factor * Rowcount,1)
1) . 索引欄位: 對於這個欄位的查詢條件是"="的情況下,我們的Cardinality Factor的計算公式就如下:
Cardinality
Factor = 1 / 欄位上的唯一值的數量
2). 索引欄位的查詢條件是"" "<=" ">=" 那麼我們計算Cardinality
Factor的公式就為
Cardinality Factor = (1 / 欄位上的唯一值的數量) + (1 / 記錄數)
3). 索引欄位的查詢條件是in,那麼我們的公式就為:
Cardinality Factor = in條件中的變數數 / 欄位上的唯一值的數量
4). 索引欄位的查詢條件是"<>",那麼我們的公式就為:
Cardinality Factor = ( 1 - (1 /
欄位上的唯一值的數量 ) )
5). 查詢條件為not in的時候,Cardinality的結果是根據not in中變數作為階乘得出的公式為:
Cardinality
Factor = ( 1 - (1 / 欄位上的唯一值的數量 ) ) ^ (not in 變數數)
非索引欄位
1). 當查詢條件為"="或者是"in"的時候,非索引欄位的Cardinality
Factor的計算公式為:
Cardinality Factor = 1 / 100
2). 當查詢條件為"","<=",">=","<>","not in",非索引欄位的Cardinality
Factor的計算公式為:
Cardinality Factor = 1 / 20
3). 非索引多欄位
公式: Cardinality Factor = 欄位1的Cardinality Factor *
欄位2的Cardinality Factor * ... * 欄位n的Cardinality Factor
4). 全表掃描
Cardinality Factor=1;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-743631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中執行計劃中的cardinalityOracle
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- 【優化】Oracle 執行計劃優化Oracle
- 【優化】ORACLE執行計劃分析優化Oracle
- db2 執行計劃DB2
- oracle cardinality對於執行計劃的影響Oracle
- 計算表掃描中執行計劃的COST
- 查詢計劃中集的勢(Cardinality)的計算
- DB2執行計劃分析DB2
- DB2執行計劃(1)DB2
- 【MySQL】MySQL的執行計劃及索引優化MySql索引優化
- 【sql調優之執行計劃】獲取執行計劃SQL
- 分析執行計劃最佳化SQLORACLE的執行計劃(轉)SQLOracle
- db2檢視執行計劃DB2
- Cardinality的計算
- explain執行計劃中的key_len的計算規則AI
- MySQL 5.7 優化不能只看執行計劃MySql優化
- 使用leading(,)優化sql執行計劃優化SQL
- 【效能優化】執行計劃與直方圖優化直方圖
- 執行計劃中Cardinality (Estimated Rows, E-Rows) 估算錯誤原因分析
- Oracle優化案例-統計資訊對執行計劃的影響(十三)Oracle優化
- 看懂Oracle中的執行計劃Oracle
- PostgreSQL執行計劃變化SQL
- 執行計劃-1:獲取執行計劃
- MySQL查詢優化之優化器工作流程以及優化的執行計劃生成MySql優化
- 執行計劃變化的處理
- Oracle 'or exists/in'結合使用引起的filter執行計劃 的優化OracleFilter優化
- 轉摘_使用leading(,)優化sql執行計劃優化SQL
- sql執行計劃變更和刪除快取中執行計劃的方法SQL快取
- SQLSERVER中得到執行計劃的方式SQLServer
- MySQL中in(常量列表)的執行計劃MySql
- mysql調優之——執行計劃explainMySqlAI
- Calcite執行計劃最佳化
- VIEW和SYNONYM引起的執行計劃的異常View
- 通過分析SQL語句的執行計劃優化SQL 二SQL優化
- 執行計劃
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 【Oracle】-【索引-HINT,執行計劃】-帶HINT的索引執行計劃Oracle索引