Oracle訪問索引的執行計劃(四)
Oracle訪問索引的執行計劃(一)
Oracle訪問索引的執行計劃(二)
Oracle訪問索引的執行計劃(三)
如果目標表比較大,相關欄位上有索引,根據CBO,Oracle可能會使用索引快速全掃描(INDEX FAST FULL SCAN)來掃描索引,提高訪問速度。索引快速全掃描使用多塊讀,可以並行執行,結果是無序的。產生db file scattered reads事件。
建立一個測試表。
SQL> create table objtest as select object_id,object_name from dba_objects;
Table created.
SQL> select count(*) from objtest;
COUNT(*)
----------
87044
建立一個非唯一索引。
SQL> create index idx_objtest_id on objtest(object_id);
Index created.
收集統計資訊。
SQL> exec dbms_stats.gather_table_stats('HR','OBJTEST',estimate_percent=>100,cascade=>true);
PL/SQL procedure successfully completed.
獲取欄位所有非空值。
SQL> select object_id from objtest where object_id is not null;
87043 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1925724089
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 87043 | 425K| 54 (0)| 00:00:01 |
|* 1 | INDEX FAST FULL SCAN| IDX_OBJTEST_ID | 87043 | 425K| 54 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
獲取欄位某個範圍的值。
SQL> select object_id from objtest where object_id between 1 and 80000;
79152 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 1925724089
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 77996 | 380K| 55 (2)| 00:00:01 |
|* 1 | INDEX FAST FULL SCAN| IDX_OBJTEST_ID | 77996 | 380K| 55 (2)| 00:00:01 |
---------------------------------------------------------------------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2140059/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle訪問索引的執行計劃(一)Oracle索引
- Oracle訪問索引的執行計劃(二)Oracle索引
- Oracle訪問索引的執行計劃(三)Oracle索引
- Oracle訪問索引的執行計劃(五)Oracle索引
- Oracle訪問表的執行計劃Oracle
- 【Oracle】-【索引-HINT,執行計劃】-帶HINT的索引執行計劃Oracle索引
- Oracle 執行計劃 訪問路徑Oracle
- Oracle 索引和執行計劃Oracle索引
- Oracle檢視執行計劃(四)Oracle
- 執行計劃-資料訪問方式(全表掃描與4種索引的方式)索引
- mysql索引和執行計劃MySql索引
- ORACLE執行計劃Oracle
- oracle執行計劃------未走索引,隱式轉換的坑Oracle索引
- MySQL執行計劃解析(四)MySql
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 建立索引調整sql的執行計劃索引SQL
- 關於索引的執行計劃記載索引
- mysql 執行計劃索引分析筆記MySql索引筆記
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- oracle sqlprofile 固定執行計劃,並遷移執行計劃OracleSQL
- 【MySQL】MySQL的執行計劃及索引優化MySql索引優化
- 索引及排序對執行計劃的影響索引排序
- 看懂Oracle中的執行計劃Oracle
- ORACLE執行計劃的介紹Oracle
- ORACLE執行計劃的檢視Oracle
- oracle執行計劃的使用(EXPLAIN)OracleAI
- Oracle 索引訪問方式Oracle索引
- Oracle中檢視已執行sql的執行計劃OracleSQL
- 【執行計劃】資料訪問方式,連線方式及方法
- Oracle執行計劃詳解Oracle
- oracle固定執行計劃--sqlprofileOracleSQL
- Oracle閱讀執行計劃Oracle
- oracle執行計劃相關Oracle
- oracle 執行計劃變更Oracle
- 【優化】Oracle 執行計劃優化Oracle
- oracle 執行計劃設定Oracle
- Oracle檢視執行計劃的命令Oracle