[20120201][補充]函式索引與取max值的問題1.txt
http://space.itpub.net/267265/viewspace-715315
在10.2.0.3下oracle執行時並沒有選擇INDEX RANGE SCAN (MIN/MAX).
補充測試:
1.建立測試例子:
SQL> select * from v$version ;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
DROP table T purge;
CREATE TABLE T AS
SELECT ROWNUM id, CASE
WHEN ROWNUM <= 99900
THEN '1'
ELSE '0'
END flag, LPAD ('a', 100, 'a') vc
FROM DUAL
CONNECT BY LEVEL <= 100000;
create index i_t_id_flag on t(flag,id);
exec SYS.DBMS_STATS.GATHER_TABLE_STATS (NULL,'T',Method_Opt=> 'FOR ALL COLUMNS SIZE 1 ',Cascade=> TRUE);
2.看看是否索引,走INDEX RANGE SCAN (MIN/MAX).
SQL> select /*+ gather_plan_statistics */ max(id) from t where flag='1';
SQL> select /*+ gather_plan_statistics */ max(id) from t where flag='1';
MAX(ID)
----------
99900
--確實可以!
在10.2.0.3下oracle執行時並沒有選擇INDEX RANGE SCAN (MIN/MAX).
補充測試:
1.建立測試例子:
SQL> select * from v$version ;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
DROP table T purge;
CREATE TABLE T AS
SELECT ROWNUM id, CASE
WHEN ROWNUM <= 99900
THEN '1'
ELSE '0'
END flag, LPAD ('a', 100, 'a') vc
FROM DUAL
CONNECT BY LEVEL <= 100000;
create index i_t_id_flag on t(flag,id);
exec SYS.DBMS_STATS.GATHER_TABLE_STATS (NULL,'T',Method_Opt=> 'FOR ALL COLUMNS SIZE 1 ',Cascade=> TRUE);
2.看看是否索引,走INDEX RANGE SCAN (MIN/MAX).
SQL> select /*+ gather_plan_statistics */ max(id) from t where flag='1';
SQL> select /*+ gather_plan_statistics */ max(id) from t where flag='1';
MAX(ID)
----------
99900
SQL> select * from table(dbms_xplan.display_cursor(NULL,NULL,'cost')) ;
PLAN_TABLE_OUTPUT
-------------------------------------
SQL_ID a98amhwysv462, child number 0
-------------------------------------
select /*+ gather_plan_statistics */ max(id) from t where flag='1'
Plan hash value: 3080205269
--------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 2 (100)| |
| 1 | SORT AGGREGATE | | 1 | 7 | | |
| 2 | FIRST ROW | | 1 | 7 | 2 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN (MIN/MAX)| I_T_ID_FLAG | 1 | 7 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - access("FLAG"='1')
--確實可以!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-715390/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20120130]函式索引與取max值的問題1.txt函式索引
- [20120131]函式索引與取max值的問題2.txt函式索引
- [20120131]函式索引與取max值的問題3.txt函式索引
- 函式索引的問題函式索引
- 二元函式的極值與最值問題函式
- 關於函式索引的問題?函式索引
- Mysql的max()函式9大於10問題MySql函式
- 0427建立Extended Statistics函式索引問題函式索引
- 0429建立Extended Statistics函式索引問題函式索引
- (2) SqlServer表與索引的結構的補充SQLServer索引
- 利用函式索引解決複雜的約束問題函式索引
- 函式呼叫引數變數傳值的問題函式變數
- 取石子的幾個找sg函式的問題函式
- 第五章:常用的高階函式和函式的補充語法函式
- 練習 讀取函式裡的值函式
- [20180509]函式索引問題.txt函式索引
- 一類初等函式下取點問題函式
- dev_queue_xmit()函式返回值問題devMIT函式
- jquery的get()函式快取問題解決方案jQuery函式快取
- js中 函式引數的 傳值/傳引用 問題JS函式
- javascript建構函式的返回值問題介紹JavaScript函式
- jQuery獲取CSS樣式中的顏色值的問題jQueryCSS
- [20180625]函式與標量子查詢13(補充)函式
- JS字串擷取函式slice(),substring(),substr()的用法 區別split()後期遇到補充JS字串函式
- 密碼找回功能可能存在的問題(補充)密碼
- 【Analytic】分析函式之MAX函式函式
- [20180212]函式索引問題.txt函式索引
- 建立聯合函式索引解決top sql效能問題函式索引SQL
- (求教)關於js函式按值、引用傳遞的問題JS函式
- 函式索引使用細節——自定義函式的索引化函式索引
- ORACLE單行函式與多行函式之三:數值函式Oracle函式
- [20150803]使用函式索引注意的問題.txt函式索引
- Oracle-空值null和數字相加的問題-nvl函式OracleNull函式
- 函式呼叫棧的問題函式
- itoa函式的奇怪問題函式
- 複合索引與函式索引優化一例索引函式優化
- python基礎(補充):lambda匿名函式,用了的,都說好!Python函式
- Python補充03 Python內建函式清單Python函式