Oracle索引范围扫描操作流程是什么
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Oracle索引范围扫描操作流程是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle索引范围扫描操作流程是什么"吧!索引范围
千家信息网最后更新 2026年11月01日Oracle索引范围扫描操作流程是什么
本篇内容主要讲解"Oracle索引范围扫描操作流程是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle索引范围扫描操作流程是什么"吧!
索引范围扫描就是按照根、枝、叶的顺序读取,然后根据读取到的满足条件的数据的ROWID回到表中读取数据,如果要查询的数据列包含在索引中那么就免去了回表这步骤。叶块的地址在枝块,枝块地址在根块。找到枝块就可以找到叶块,找到根块就可以找到枝块。那么,如何找到根块呢?
其实很简单,在Oracle中,根块永远在索引段头的下一个块处。因此,索引扫描是不必读取索引段头的。先在数据字典表中找到段头位置,块号加1就是根块位置了。
接下来测试看看
-创建一个测试表
SQL> create table t11 as select * from dba_objects;Table created.
-创建索引
SQL> create index ind_t11 on t11(object_id);Index created.
-收集统计信息
SQL> exec dbms_stats.gather_table_stats(ownname=>'SCOTT',tabname=>'T11',estimate_percent=>100,cascade=>true,method_opt=>'for all columns size auto',no_invalidate=>false);PL/SQL procedure successfully completed.
-查看索引信息
SQL> select table_name,index_name,blevel,index_type,leaf_blocks from dba_indexes where index_name='IND_T11' and table_name='T11';TABLE_NAME INDEX_NAME BLEVEL INDEX_TYPE LEAF_BLOCKS------------------------------ ------------------------------ ---------- --------------------------- -----------T11 IND_T11 1 NORMAL 161
-执行一个简单查询查看执行计划
SQL> select * from table(dbms_xplan.display_cursor('','','allstats last'));PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------SQL_ID g7411gwcvppnd, child number 0-------------------------------------select * from t11 where object_id=11Plan hash value: 469757982-------------------------------------------------------------------------------------------------| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |-------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 4 || 1 | TABLE ACCESS BY INDEX ROWID| T11 | 1 | 1 | 1 |00:00:00.01 | 4 ||* 2 | INDEX RANGE SCAN | IND_T11 | 1 | 1 | 1 |00:00:00.01 | 3 |-------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 2 - access("OBJECT_ID"=11)19 rows selected.从执行计划可以看到在索引范围扫描这一步消耗了3个逻辑读,而索引的层高为1,说明有两层
观察到的逻辑读为4。这4次逻辑读分别是:Root块一次,叶块两次,回表读取数据块一次。
叶块之所以需要两次,是因为索引是非唯一的。第一次读叶块是为了取出目标行ROWID,第二次读叶块是判断此叶块中还有没有满足条件的行。
如果建成了唯一索引,不需要判断叶块是否还有满足条件的行,叶块就只需要读一次,一共只需要3次逻辑读。
drop index ind_t11;SQL> drop index ind_t11;Index dropped.create unique index ind_t11_1 on t11(object_id);SQL> create unique index ind_t11_1 on t11(object_id);Index created.select * from t11 where object_id=11;SQL> select * from table(dbms_xplan.display_cursor('','','allstats last'));PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------SQL_ID g7411gwcvppnd, child number 0-------------------------------------select * from t11 where object_id=11Plan hash value: 645999193------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.01 | 3 | 4 || 1 | TABLE ACCESS BY INDEX ROWID| T11 | 1 | 1 | 1 |00:00:00.01 | 3 | 4 ||* 2 | INDEX UNIQUE SCAN | IND_T11_1 | 1 | 1 | 1 |00:00:00.01 | 2 | 4 |------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 2 - access("OBJECT_ID"=11)19 rows selected.到此,相信大家对"Oracle索引范围扫描操作流程是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
索引
范围
数据
逻辑
流程
条件
查询
位置
信息
内容
地址
就是
学习
测试
实用
更深
接下来
之所以
兴趣
字典
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
互联网品科技
互联网络科技有限公司
互联网未来科技
嘟嘟瓜互联网科技
紫鲸互联网科技
宁波青枫互联网科技有限公司
欧洲十大科技互联网公司
互联网金融中的现代科技
畅思互联网科技
互联网金融科技元年
南通创西澳互联网科技有限公司
广州百诚互联网科技有限公司官网
云南互联网科技学费
美国五大互联网科技公司市值多少
北京军民互联网科技公司
深圳互联网科技园地址
互联网科技大佬云集
重庆科技产业互联网有哪些
互联网高科技绘画
鸠鸠互联网科技
美国互联网科技巨头监管
金融科技 互联网金融
互联网金融 金融科技
互联网科技网站
互联网对科技的发展
呼和浩特新华互联网科技学院
东莞新华互联网科技学校
上海科技产业互联网平台
小牛互联网科技有限公司地址