Oracle訪問索引的執行計劃(二)
如果目標SQL對有唯一索引欄位指定範圍查詢條件,則會使用索引範圍掃描,而對於非唯一索引欄位,不管指定什麼查詢條件,均不會使用索引唯一掃描。索引範圍掃描的執行計劃為INDEX RANGE SCAN。
檢視HR使用者下EMPLOYEES表的EMPLOYEE_ID欄位的索引,為唯一索引。
SQL> select a.table_name,column_name,a.index_name,index_type,uniqueness from user_indexes a,user_ind_columns b where a.index_name=b.index_name and a.table_name='EMPLOYEES' and column_name='EMPLOYEE_ID';
TABLE_NAME COLUMN_NAME INDEX_NAME INDEX_TYPE UNIQUENES
-------------------- -------------------- -------------------- -------------------- ---------
EMPLOYEES EMPLOYEE_ID EMP_EMP_ID_PK NORMAL UNIQUE
使用範圍查詢條件:
SQL> select employee_id,last_name,salary from employees where employee_id between 100 and 110;
11 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 603312277
---------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 11 | 176 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 11 | 176 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | EMP_EMP_ID_PK | 11 | | 1 (0)| 00:00:01 |
---------------------------------------------------------------------------------------------
檢視HR使用者下EMPLOYEES表的LAST_NAME欄位的索引,為非唯一索引。
SQL> select a.table_name,column_name,a.index_name,index_type,uniqueness from user_indexes a,user_ind_columns b where a.index_name=b.index_name and a.table_name='EMPLOYEES' and column_name='LAST_NAME';
TABLE_NAME COLUMN_NAME INDEX_NAME INDEX_TYPE UNIQUENES
--------------- --------------- --------------- --------------- ---------
EMPLOYEES LAST_NAME EMP_NAME_IX NORMAL NONUNIQUE
使用等值查詢條件:
SQL> select employee_id,last_name,salary from employees where last_name='Lee';
Execution Plan
----------------------------------------------------------
Plan hash value: 2077747057
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 16 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 1 | 16 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | EMP_NAME_IX | 1 | | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2139955/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 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索引
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 建立索引調整sql的執行計劃索引SQL
- 關於索引的執行計劃記載索引
- 如何讓Oracle產生預期的執行計劃(二)Oracle
- 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