iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle索引范围扫描操作流程是什么
  • 948
分享到

Oracle索引范围扫描操作流程是什么

2024-04-02 19:04:59 948人浏览 薄情痞子
摘要

本篇内容主要讲解“oracle索引范围扫描操作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“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=11
Plan 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=11
Plan 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索引范围扫描操作流程是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle索引范围扫描操作流程是什么

本文链接: https://www.lsjlt.com/news/62969.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle索引范围扫描操作流程是什么
    本篇内容主要讲解“Oracle索引范围扫描操作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle索引范围扫描操作流程是什么”吧!索引范围扫描就...
    99+
    2024-04-02
  • php操作ElasticSearch搜索引擎流程是什么
    本篇内容主要讲解“php操作ElasticSearch搜索引擎流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php操作ElasticSearch搜索引擎流程是什么”吧!一、安装通过co...
    99+
    2023-06-25
  • oracle索引类型的作用是什么
    这期内容当中小编将会给大家带来有关oracle索引类型的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。逻辑上: Single column ...
    99+
    2024-04-02
  • Oracle中NVARCHAR2对索引和搜索操作有什么影响
    在Oracle中,NVARCHAR2是一种Unicode字符数据类型,它可以存储变长的Unicode字符数据。相比于VARCHAR2...
    99+
    2024-04-09
    Oracle
  • update表中index索引列对原索引条目的操作是什么
    本篇内容主要讲解“update表中index索引列对原索引条目的操作是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“update表中index索引...
    99+
    2024-04-02
  • elasticSearch-api的具体操作流程是什么
    这篇文章主要介绍“elasticSearch-api的具体操作流程是什么”,在日常操作中,相信很多人在elasticSearch-api的具体操作流程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ela...
    99+
    2023-06-20
  • oracle数据库em安装文档以及操作流程是什么
    这篇文章主要介绍“oracle数据库em安装文档以及操作流程是什么”,在日常操作中,相信很多人在oracle数据库em安装文档以及操作流程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • C语言文件的操作流程是什么
    这篇文章主要介绍“C语言文件的操作流程是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言文件的操作流程是什么”文章能帮助大家解决问题。为什么使用文件前面写的通讯录,增加人数退出程序后,数据就...
    99+
    2023-06-29
  • 索引在Java应用程序中的作用是什么?
    在Java应用程序中,索引是一种非常重要的数据结构。索引的作用是提高数据的查询效率,特别是在大型数据集合中。在本文中,我们将介绍索引的工作原理、不同类型的索引和如何在Java应用程序中使用索引。 什么是索引? 在数据库中,索引是一种数据结...
    99+
    2023-08-22
    path 打包 索引
  • webpack转vite的操作流程与问题是什么
    今天小编给大家分享一下webpack转vite的操作流程与问题是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、全局安...
    99+
    2023-07-05
  • 云服务器ecs用户操作流程是什么
    云服务器ECS用户操作流程如下: 确认云服务器ECS账户的密码,可以使用登录名、邮箱、用户名或者手机号码等任一有效的信息注册云服务器ECS账户,确保账户信息安全。 登录云服务器ECS账户,进入云服务器ECS管理界面,可以使用账户创建快捷...
    99+
    2023-10-26
    操作流程 服务器 用户
  • 企业自助建站系统操作流程是什么
    1.选择自助建站系统:首先需要选择一款适合自己企业的自助建站系统,比如WordPress、Wix等。2.注册账号:注册一个账号,填写...
    99+
    2023-06-08
    企业自助建站系统
  • 购买亚马逊服务器操作流程是什么
    首先,你需要选择一个云服务器提供商,可以是AWS、阿里云、微软云等。 接着,你需要注册一个AWS账户,可以选择传统的用户名和密码登录,也可以选择使用亚马逊提供的AWS CLI认证。 然后,你需要选择一个云计算服务,可以是AWS EC2、A...
    99+
    2023-10-27
    亚马逊 操作流程 服务器
  • spring中JdbcTemplate操作oracle的存储过程是什么
    这篇“spring中JdbcTemplate操作oracle的存储过程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“s...
    99+
    2023-07-06
  • 云服务器ecs用户操作流程是什么样的
    登录云服务器:在云服务器控制台中输入正确的用户名和密码,登录云服务器。 创建实例:在实例管理界面中,选择需要创建的云服务器实例,然后点击“创建实例”按钮。 配置云服务器:在实例管理界面中,可以对云服务器的配置参数进行配置,如CPU、内存、...
    99+
    2023-10-27
    操作流程 服务器 用户
  • Spring Security基本架构与初始化操作流程是什么
    这篇文章主要介绍“Spring Security基本架构与初始化操作流程是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Security基本架构与初始化操作流程...
    99+
    2023-07-05
  • SAP 跨公司采购操作流程及配置要点是什么
    这篇文章主要为大家分析了SAP 跨公司采购操作流程及配置要点是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“SAP 跨公司采购操作流程及配置要点是什么”...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作