使用繫結變數窺探後的cardinality和selectivity的計算方法
-
create table t1 as select * from dba_objects;
-
-
create index idx_t1 on t1(object_id);
-
-
exec dbms_stats.gather_table_stats('SYS','T1',estimate_percent=>100,no_invalidate=>false,cascade=>true,method_opt=>'for all columns size 1');
-
-
select count(*) from t1 where object_id between :x and :y;
-
-
select * from table(dbms_xplan.display_cursor(null,null,'advanced');
-
-
--使用繫結變數窺探後的cardinality和selectivity的計算方法:
-
cardinality = num_rows * selectivity
-
-
selectivity = ((y-x)/(high_value - low_value) + 2/num_distinct) * null_adjust
-
- null_adjust = (num_rows - num_nulls)/num_rows
1.上述計算公司適用於啟用了繫結變數窺探且where條件為“目標列between x and y”的selectivity和cardinality的計算,且x和y均處於目標列的low_value和high_value之間;
2.num_rows表示目標列所在表的記錄數;
3.low_value和high_value分別表示目標列的最小值和最大值;
4.num_distinct表示目標列的distinct值的數量;
5.num_nulls表示目標列的null值的數量.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2137147/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 繫結變數窺探Oracle變數
- 繫結變數之繫結變數窺探(Bind Peeking)變數
- 10g繫結變數窺探變數
- 繫結變數優缺點、使用、繫結變數窺探、 Oracle自適應共享遊標變數Oracle
- 繫結變數窺測的演變變數
- 繫結變數窺測變數
- CBO中基數(cardinality)、可選擇率(selectivity)的計算公式公式
- oracle繫結變數窺視(zt)Oracle變數
- Oracle 變數繫結與變數窺視合集Oracle變數
- 計算查詢條件是or區間時候的selectivity和Cardinality
- 繫結變數窺視測試案例變數
- 【SQL 調優】繫結變數窺測SQL變數
- 【原創】Oracle 變數繫結與變數窺視合集Oracle變數
- oracle bind value peeking繫結變數窺視Oracle變數
- 選擇率(selectivity)與基數(cardinality)
- 繫結變數的使用範圍變數
- 關於繫結變數的使用變數
- 使用繫結變數的一點總結!變數
- PLSQL使用繫結變數SQL變數
- 【優化】使用繫結變數 OR 不使用繫結變數,這不是問題!優化變數
- Cardinality的計算
- 10g以後檢視未使用繫結變數的sql變數SQL
- 【最佳化】使用繫結變數 OR 不使用繫結變數,這不是問題!變數
- PLSQL中使用繫結變數的語法SQL變數
- Oracle獲取繫結變數的各種方法Oracle變數
- 繫結變數的測試變數
- oracle中使用繫結變數的好處的例子Oracle變數
- 繫結變數變數
- 在php中使用繫結變數的方法(Oracle SQL共享的機制)(轉)PHP變數OracleSQL
- 統計未用繫結變數的sql語句變數SQL
- oracle 查詢未使用繫結變數的sqlOracle變數SQL
- 繫結變數和BIND PEEKING變數
- SQL Developer中使用繫結變數SQLDeveloper變數
- PostgreSQL多值列的選擇性-Statistics,Cardinality,Selectivity,EstimateSQL
- 繫結變數的一個例子變數
- oracle繫結變數的測試Oracle變數
- 查詢繫結變數的值變數
- 關於繫結變數的SQL繫結什麼值變數SQL