Oracle CBO优化模式中的5种索引访问方法浅析
本文主要讨论以下几种索引访问方法:
1.索引唯一扫描(INDEXUNIQUESCAN)
2.索引范围扫描(INDEXRANGESCAN)
3.索引全扫描(INDEXFULLSCAN)
4.索引跳跃扫描(INDEXSKIPSCAN)
5.索引快速全扫描(INDEXFASTFULLSCAN)
索引唯一扫描(INDEXUNIQUESCAN)
通过这种索引访问数据的特点是对于某个特定的值只返回一行数据,通常如果在查询谓语中使用UNIQE和PRIMARYKEY索引的列作为条件的时候会选用这种扫描;访问的高度总是索引的高度加一,除了某些特殊的情况,如另外存储的LOB对象。
SQL>setautotracetraceonlyexplain SQL>select*fromhr.employeeswhereemployee_id=100;
ExecutionPlan ---------------------------------------------------------- Planhashvalue:1833546154
--------------------------------------------------------------------------------------------- |Id |Operation |Name |Rows |Bytes|Cost(%CPU)|Time | --------------------------------------------------------------------------------------------- | 0|SELECTSTATEMENT | | 1| 69| 1 (0)|00:00:01| | 1| TABLEACCESSBYINDEXROWID|EMPLOYEES | 1| 69| 1 (0)|00:00:01| |* 2| INDEXUNIQUESCAN |EMP_EMP_ID_PK| 1| | 0 (0)|00:00:01| ---------------------------------------------------------------------------------------------
PredicateInformation(identifiedbyoperationid): ---------------------------------------------------
2-access("EMPLOYEE_ID"=100)