iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle中的索引扫描
  • 201
分享到

oracle中的索引扫描

oracle中的索引扫描 2016-01-30 08:01:42 201人浏览 无得
摘要

一、INDEX UNIQUE SCAN(索引唯一扫描) 索引唯一性扫描(INDEX UNIQUE SCAN)是针对唯一性索引(UNIQUE INDEX)的扫描,它仅仅适用于where条件里是等值查询的目标sql。因为扫描的对象是

oracle中的索引扫描

一、INDEX UNIQUE SCAN(索引唯一扫描)

索引唯一性扫描(INDEX UNIQUE SCAN)是针对唯一性索引(UNIQUE INDEX)的扫描,它仅仅适用于where条件里是等值查询的目标sql。因为扫描的对象是唯一性索引,所以索引唯一性扫描的结果至多只会返回一条记录。

二、INDEX RANGE SCAN(索引范围扫描)

索引范围扫描(INDEX RANGE SCAN)适用于所有类型的B树索引,当扫描的对象是唯一性索引时,此时目标SQL的where条件一定是范围查询(谓词条件为 BETWEEN、<、>等);当扫描的对象是非唯一性索引时,对目标SQL的where条件没有限制(可以是等值查询,也可以是范围查询)。 索引范围扫描的结果可能会返回多条记录,其实这就是索引范围扫描中"范围"二字的本质含义。

三、INDEX FULL SCAN(索引全扫描)

索引全扫描(INDEX FULL SCAN)就是指要扫描目标索引所有叶子块的所有索引行。这里需要注意的是,索引全扫描需要扫描目标索引的所有叶子块,但这并不意味着需要扫描该索引的所有分支块。在默认情况下,oracle在做索引全扫描时只需要通过访问必要的分支块定位到位于该索引最左边的叶子块的第一行索引行,就可以利用该索引叶子块之间的双向指针链表,从左至右依次顺序扫描该索引所有叶子块的所有索引行了。

四、INDEX FAST FULL SCAN(索引快速扫描)

索引快速全扫描(INDEX FAST FULL SCAN)和索引全扫描(INDEX  FULL SCAN)极为类似,它也适用于所有类型的B树索引(包括唯一性索引和非唯一性索引)。和索引全扫描一样,索引快速全扫描也需要扫描目标索引所有叶子块的所有索引行。

索引快速全扫描与索引全扫描相比有如下三点区别。

(1)索引快速全扫描只适用于CBO。

(2)索引快速全扫描可以使用多块读,也可以并行执行。

(3)索引快速全扫描的执行结果不一定是有序的。这是因为索引快速全扫描时Oracle是根据索引行在磁盘上的物理存储顺序来扫描,而不是根据索引行的逻辑顺序来扫描的,所以扫描结果才不一定有序(对于单个索引叶子块中的索引行而言,其物理存储顺序和逻辑存储顺序一致;但对于物理存储位置相邻的索引叶子块而言,块与块之间索引行的物理存储顺序则不一定在逻辑上有序)。

五、INDEX SKIP SCAN(索引跳跃扫描)

索引跳跃式扫描(INDEX SKIP SCAN)是Oracle 9i后提供,适用于所有类型的复合索引(包括唯一性索引和非唯一性索引),它使那些在where条件中没有对目标索引的前导列 (索引包含的第一列) 指定查询条件但同时又对该 索引的非前导列(不是索引的第一列)指定了查询条件的目标SQL依然可以用上该索引,这就像是在扫描该索引时跳过了它的前导列(索引包含的第一列),直接从该索引的非前导列(不是索引的第一列)开始扫描一样(实际的执行过程并非如此),这也是索引跳跃式扫描中"跳跃"(SKIP)一词的含义。

简单来说:有时候复合索引的前导列(索引包含的第一列)没有在查询语句中出现,oralce也会使用该复合索引,这时候就使用的INDEX SKIP SCAN;

触发 INDEX SKIP SCAN 前提条件:表有一个复合索引,且在查询时有除了前导列(索引中第一列)外的其他列作为条件,并且优化器模式为CBO时当Oracle发现前导列的唯一值个数很少时,会将每个唯一值都作为常规扫描的入口,在此基础上做一次查找,最后合并这些查询。

您可能感兴趣的文档:

--结束END--

本文标题: oracle中的索引扫描

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

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

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

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

下载Word文档
猜你喜欢
  • MySQL中的全表扫描和索引树扫描 的实例详解
    目录引言实例引言 在学习mysql时,我们经常会使用explain来查看sql查询的索引等优化手段的使用情况。在使用explain时,我们可以观察到,explain的输出有一个很关键...
    99+
    2024-04-02
  • Oracle索引范围扫描操作流程是什么
    本篇内容主要讲解“Oracle索引范围扫描操作流程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle索引范围扫描操作流程是什么”吧!索引范围扫描就...
    99+
    2024-04-02
  • PostgreSQL索引扫描成本估算中的函数分析
    这篇文章主要介绍“PostgreSQL索引扫描成本估算中的函数分析”,在日常操作中,相信很多人在PostgreSQL索引扫描成本估算中的函数分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 怎么进行mysql索引覆盖扫描优化
    本篇文章为大家展示了怎么进行mysql索引覆盖扫描优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。覆盖扫描即直接在索引中扫描出结果返回给客户端,不需要根据索引再去...
    99+
    2024-04-02
  • PostgreSQL索引扫描时为什么indexonlyscan不返回ctid
    我们都知道在PostgreSQL中使用索引扫描时,是通过索引中存储的ctid去表中得到数据的。同时在PostgreSQL中如果要查询的列都在索引中,我们还可以使用index only...
    99+
    2024-04-02
  • Swoole和Workerman对PHP与MySQL的索引扫描和索引覆盖查询的优化方法
    引言:在大规模的Web应用中,数据库查询的性能优化是至关重要的。索引是一种非常有效的优化手段之一,可以加快查询的速度。针对PHP与MySQL的索引扫描和索引覆盖查询,本文将介绍如何使用Swoole和Workerman来进行优化,并提供具体的...
    99+
    2023-10-21
    优化方法 Workerman 关键词:swoole
  • 列索引 8 上的扫描错误,名称“replicated”:不支持扫描,将 driver.Value 类型 uint8 存储为 **bool 类型
    问题内容 我使用 sqlx 将 PostgreSQL boolan[] 选择到 Golang 结构中,其中目标结构值为 []*bool。 type App struct { A...
    99+
    2024-02-12
  • oracle中SQL全表扫描过程分析
    本篇内容主要讲解“oracle中SQL全表扫描过程分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle中SQL全表扫描过程分析”吧!以下SQL 走了全...
    99+
    2024-04-02
  • spring中@ComponentScan自动扫描并指定扫描规则
    目录1.使用注解配置包扫描1.1.创建相关类1.2.SpringBoot启动类默认就有配置@ComponentScan1.3.查看IOC中的bean的名称2.扫描时排除注解标注的类3...
    99+
    2023-05-18
    @ComponentScan自动扫描 spring @ComponentScan扫描
  • oracle怎么避免全表扫描
    创建索引:通过在查询条件中使用索引字段,可以帮助Oracle优化查询计划,避免全表扫描。 编写高效的SQL语句:避免使用通配...
    99+
    2024-04-09
    oracle
  • Oracle中的索引讲解
    一、B-树索引 索引一般是B-Tree索引,在索引结构中存储着键值和键值的RowID,并且是一一对应的。 create [unique] index studentin studen...
    99+
    2024-04-02
  • 如何使用Java实现分布式索引和二维码扫描的集成?
    Java作为一种强大的编程语言,可以实现各种应用程序的开发。本文将介绍如何使用Java实现分布式索引和二维码扫描的集成,帮助读者更好地理解这一过程。 一、分布式索引的实现 分布式索引是指将索引数据存储在多个节点上,以提高查询效率和可靠性。在...
    99+
    2023-09-26
    分布式 索引 二维码
  • Spring自动扫描无法扫描jar包中bean的解决方法
    发现问题前几天用eclipse打包了一个jar包,jar包里面是定义的Spring的bean。然后将jar包放到lib下,设置spring的自动扫描这个jar包中的bean,可谁知根本无法扫描到bean,显示错误就是找不到bean,当时就纳...
    99+
    2023-05-31
    spring jar包 bean
  • springboot扫描引入jar包的service等组件方式
    在pom中引入对应的依赖,如果引入的三方jar包跟该项目Application所在包目录包含被依赖jar包目录, 即下面的情况: 像上面这种包组织的话,是不需要额外加入任何配置的(...
    99+
    2024-04-02
  • oracle中的索引怎么用
    oracle 中索引用于快速查找数据并优化查询性能,可用来创建索引、维护索引和在查询中使用索引。索引的优点包括提高查询速度、减少 i/o 操作、优化联接和促进数据完整性。oracle 支...
    99+
    2024-05-09
    oracle
  • 如何解决索引扫描时对同一个叶子块访问多次的问题
    本篇内容介绍了“如何解决索引扫描时对同一个叶子块访问多次的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • Oracle中复合索引与空值的索引怎么用
    这篇文章给大家分享的是有关Oracle中复合索引与空值的索引怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在QQ群里讨论一个SQL优化的问题,语句大致如下:selec...
    99+
    2024-04-02
  • MYSQL 中的GROUP BY 的方式 (1)(loose index scan松散扫描 tight index scan紧凑扫描)
    水平有限有误请指出,转载请说明出处 测试脚本: create table tgrploose(p_id int primary key auto_increment,s_id1 int,s_id2 in...
    99+
    2024-04-02
  • 扫描仪在工作中的使用
    日常工作中,我们经常会因文字无法直接复制、纸质版文件难以转化成电子版文件等琐碎事件而烦躁。在这种情况下,对于少量的工作任务量,大多数人会直接选择拍照、然后从手机上进行扫描识别,而对于大量文档,像是政府档案卷宗、企事业单位合同文档等的处理以及...
    99+
    2023-06-03
  • oracle中什么是索引
    在Oracle中,索引是一种数据结构,用于快速访问和检索数据库表中的数据。它类似于书籍的目录,通过指向表中数据的物理位置,可以加快查...
    99+
    2023-08-22
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作