当前位置: 首页 > news >正文

Oracle 常见索引扫描方式概述,哪种索引扫描最快!

一.常见的索引扫描方式

  1. INDEX RANGE SCAN
  2. INDEX FAST FULL SCAN
  3. INDEX FULL SCAN(MIN/MAX)
  4. INDEX FULL SCAN

二.分别模拟使用这些索引的场景

1.INDEX RANGE SCAN

create table t1 as select rownum as id, rownum/2 as id2 from dual connect by level<=500000;
create index idx1 on t1(id);
set linesize 200
set autotrace trace
select * from t1 where id=100;

2.INDEX FAST FULL SCAN

create table t2 as select * from dba_objects;
create index idx2 on t2(object_id);
set linesize 200
set autotrace trace
select count(*) from t where object_id is not null;

3.INDEX FULL SCAN(MIN/MAX)

create table t3 as select * from dba_objects;
create index idx3 on t3(object_id);
select max(object_id) from t3;

4.INDEX FULL SCAN

create table t as select * from dba_objects;
alter table t modify object_id not null;
update t set object_id = 2;
update t set object_id=5 where rownum<=25000;
commit;
create index idx9 on t(object_id);
select /*+index(t)*/ distinct object_id from t;

三.使用场景与速度比较

首先,说INDEX RANGE SCAN 即 索引范围扫描,我们都知道索引的高度是很低的,索引范围扫描是一种高效的扫描方式,在返回记录很少时相当高效,这也是最常见的索引扫描方式。

而 INDEX FULL SCAN(MIN/MAX)扫描也是基于索引的存储结构实现的,B Tree 的所有数据都存储在叶子节点,而叶子节点的数据是有序的,如果遇到查询最大值/最小值的场景,正常来说 INDEX FULL SCAN(MIN/MAX) 速度是最快的,因为在扫描时,只需要扫描B Tree的第一个块和最后一个块即可,这样就直接找到了最大值/最小值。

INDEX FULL SCAN和INDEX FAST FULL SCAN  

可以明确的说INDEX FAST FULL SCAN 是快于INDEX FULL SCAN 的。

原理是INDEX FAST FULL SCAN 是一次性读取多个数据块,而INDEX FULL SCAN 只是一次性读取一个数据块。那为什么还要有INDEX FULL SCAN 这样的索引扫描方式???   

看上面的模拟场景2就可以发现 如果想要统计select count(*)  那一次性读取多个数据块当然是最好的选择。

再看模拟场景4 select /*+index(t)*/ distinct object_id from t;

为什么选择INDEX FULL SCAN 一次性只读取一个数据块呢,原因是distinct 是有排序的操作的 如果使用INDEX FAST FULL SCAN 一次性读取多个数据块是难以保证 有序的。并且,我们使用了索引避免了排序。这在Oracle的设计中非常常见,Oracle 中 LGWR 进程是最繁忙的进程,那为什么LGWR进程 不设置为多进程呢? 也是由于LGWR 需要保证写日志的有序性,这样才能根据顺序恢复。

但在模拟场景4 中 我使用了hint ,因为不使用hint 也是会走 INDEX FAST FULL SCAN。这是由于虽然我们使用索引,让场景四 使用了INDEX FULL SCAN。但这也带来一个问题,一次读取一个数据块造成了大量的逻辑读。 可以看到 没有使用hint 逻辑读是150,而使用了hint 逻辑读则是219。

在这个时候CBO就会进行判断

如果使用 INDEX FULL SCAN ,则肯定可以避免排序,因为数据块是一个一个读取的,但这样造成了大量的逻辑读。 

如果使用 INDEX FAST FULL SCAN,则排序是不可避免的,因为数据库是批量读取的,但这样也有一个好处,那就是减少了大量的逻辑读。

就这个场景来看,CBO 已经做除了决定,那就是使用INDEX FAST FULL SCAN ,宁愿多耗费排序的操作,也不愿意 造成大量的逻辑读,给系统造成负担。

相关文章:

Oracle 常见索引扫描方式概述,哪种索引扫描最快!

一.常见的索引扫描方式 INDEX RANGE SCANINDEX FAST FULL SCANINDEX FULL SCAN(MIN/MAX)INDEX FULL SCAN 二.分别模拟使用这些索引的场景 1.INDEX RANGE SCAN create table t1 as select rownum as id, rownum/2 as id2 from dual connect by level<500000; create inde…...

字符串(3)_二进制求和_高精度加法

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 字符串(3)_二进制求和_高精度加法 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…...

《神经网络:智能时代的核心技术》

《神经网络&#xff1a;智能时代的核心技术》 一、神经网络的诞生与发展二、神经网络的结构与工作原理&#xff08;一&#xff09;神经元模型&#xff08;二&#xff09;神经网络训练过程 三、神经网络的应用领域&#xff08;一&#xff09;信息领域&#xff08;二&#xff09;…...

pdf内容三张以上转图片,使用spire.pdf.free

一、依赖 <spire.pdf.free.version>9.13.0</spire.pdf.free.version><itextpdf.version>5.5.13</itextpdf.version><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>$…...

游戏、软件、开源项目和资讯

游戏 标题链接【白嫖正版游戏】IT之家喜加一website 软件 标题链接【白嫖正版软件】反斗限免website 开源项目 标题链接【Luxirty Search】基于Google搜索结果&#xff0c;屏蔽内容农场Github【Video2X】图片/视频超分工具Github 新闻资讯 标题链接分享10个 Claude 3.5 …...

Acrel-1000变电站综合自动化系统及微机在化工企业中的应用方案

文&#xff1a;安科瑞郑桐 摘要&#xff1a;大型化工企业供配电具有的集约型特点&#xff0c;化工企业内35kV变电站和10kV变电所数量大、分布广&#xff0c;对于老的大多大型及中型化工企业而言&#xff0c;其变电站或变电所内高压电气设备为旧式继电保护装置&#xff0c;可靠…...

[Linux] CentOS7替换yum源为阿里云并安装gcc详细过程(附下载链接)

前言 CentOS7替换yum源为阿里云 yum是CentOS中的一种软件管理器&#xff0c;通过yum安装软件&#xff0c;可以自动解决包依赖的问题&#xff0c;免去手工安装依赖包的麻烦。 yum使用了一个中心仓库来记录和管理软件的依赖关系&#xff0c;默认为mirrorlist.centos.org&#xf…...

在Java中创建多线程的三种方式

多线程的创建和启动方式 在Java中&#xff0c;创建多线程主要有以下三种方式&#xff1a; 继承Thread类实现Runnable接口使用Callable接口与Future 下面是这三种方式的简单示例&#xff0c;以及如何在主类中启动它们。 1. 继承Thread类 class MyThread extends Thread {Ov…...

洛谷 AT_abc374_c [ABC374C] Separated Lunch 题解

题目大意 KEYENCE 总部有 N N N 个部门&#xff0c;第 i i i 个部门有 K i K_i Ki​ 个人。 现在要把所有部门分为 AB 两组&#xff0c;求这两组中人数多的那一组的人数最少为多少。 题目分析 设这些部门共有 x x x 个人&#xff0c;则较多的组的人数肯定大于等于 ⌈ …...

力扣2528.最大化城市的最小电量

力扣2528.最大化城市的最小电量 题目解析及思路 题目要求找到所有城市电量最小值的最大 电量为给城市供电的发电站数量 因此每座城市的电量可以用一段区间和表示&#xff0c;即前缀和 二分最低电量时 如果当前城市电量不够,贪心的想发电站建立的位置&#xff0c;应该是在mi…...

【zookeeper】集群配置

zookeeper 数据结构 zookeeper数据模型结构&#xff0c;就和Linux的文件系统类型&#xff0c;看起来是一颗树&#xff0c;每个节点称为一个znode.每一个Znode默认的存储1MB的数据&#xff0c;每个Znode都有唯一标识&#xff0c;可以通过命令显示节点的信息每当节点有数据变化…...

YOLO11 目标检测 | 导出ONNX模型 | ONNX模型推理

本文分享YOLO11中&#xff0c;从xxx.pt权重文件转为.onnx文件&#xff0c;然后使用.onnx文件&#xff0c;进行目标检测任务的模型推理。 用ONNX模型推理&#xff0c;便于算法到开发板或芯片的部署。 备注&#xff1a;本文是使用Python&#xff0c;编写ONNX模型推理代码的 目…...

PostgreSQL DBA月度检查列表

为了确保数据库系统能够稳定高效运行&#xff0c;DBA 需要定期对数据库进行检查和维护&#xff0c;这是一项非常具有挑战性的工作。 本文给大家推荐一个 PostgreSQL DBA 月度性能检查列表&#xff0c;遵循以下指导原则可以帮助我们实现一个高可用、高性能、低成本、可扩展的数…...

驱动开发系列12 - Linux 编译内核模块的Makefile解释

一:内核模块Makefile #这一行定义了要编译的内核模块目标文件。obj-m表示目标模块对象文件(.o文件), #并指定了两个模块源文件:helloworld-params.c 和 helloworld.c。最终会生成这 #这两个.c文件的.o对象文件。 obj-m := helloworld-params.o helloworld.o#这行定义了内核…...

用js+css实现圆环型的进度条——js+css基础积累

如果用jscss实现圆环型的进度条&#xff1a; 直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><met…...

TDengine 与北微传感达成合作,解决传统数据库性能瓶颈

在当今物联网&#xff08;IoT&#xff09;快速发展的背景下&#xff0c;传感器技术已成为各个行业数字化转型的关键组成部分。随着设备数量的激增和数据生成速度的加快&#xff0c;如何高效地管理和分析这些数据&#xff0c;成为企业实现智能化运营的重要挑战。尤其是在惯性传感…...

通过Python爬虫获取商品销量数据,轻松掌握市场动态

为什么选择Python爬虫&#xff1f; 简洁易用&#xff1a;Python语言具有简洁的语法和丰富的库&#xff0c;使得编写爬虫变得简单高效。强大的库支持&#xff1a;Python拥有强大的爬虫框架&#xff08;如Scrapy、BeautifulSoup、Requests等&#xff09;&#xff0c;可以快速实现…...

学习虚幻C++开发日志——TSet

TSet 官方文档&#xff1a;虚幻引擎中的Set容器 | 虚幻引擎 5.5 文档 | Epic Developer Community (epicgames.com) TSet 是通过对元素求值的可覆盖函数&#xff0c;使用数据值本身作为键&#xff0c;而不是将数据值与独立的键相关联。 默认情况下&#xff0c;TSet 不支持重…...

面向对象进阶(下)(JAVA笔记第二十二期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 抽象方法和抽象类抽象方法定义格式抽象类定义格式抽象方法和抽象类注意事项 接口接口的定义接口中成员变量的特点接口中没有构造方法接口中成员方法的特点在接口中定义具有方法体…...

通信协议——UART

目录 基础概念串行&并行串行的优缺点 单工&双工 UART基本概念时序图思考&#xff1a;接收方如何确定01和0011 基础概念 串行&并行 串行为8车道&#xff0c;并行为1车道 串行的优缺点 通行速度快浪费资源布线复杂线与线之间存在干扰 单工&双工 单工&#xf…...

最优阵列处理技术(七)-谱加权

阵列的加权技术等价于时间序列谱分析中的加窗或锐化技术。在加权过程中,需要考虑的是如何降低旁瓣并使主波束宽度的增长最小。 首先需要明确的是,在 u u u空间下的波束方向图为 B u ( u ) =...

Java | Leetcode Java题解之第486题预测赢家

题目&#xff1a; 题解&#xff1a; class Solution {public boolean PredictTheWinner(int[] nums) {int length nums.length;int[] dp new int[length];for (int i 0; i < length; i) {dp[i] nums[i];}for (int i length - 2; i > 0; i--) {for (int j i 1; j …...

leetcode动态规划(十五)-完全背包

题目 leetcode上没有纯完全背包题目&#xff0c;可以看卡码网上的题目 完全背包 思路 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff…...

AI视听新体验!浙大阿里提出视频到音乐生成模型MuVi:可解决语义对齐和节奏同步问题

MuVi旨在解决视频到音乐生成(V2M)中的语义对齐和节奏同步问题。 MuVi通过专门设计的视觉适配器分析视频内容,以提取上下文 和时间相关的特征,这些特征用于生成与视频的情感、主题及其节奏和节拍相匹配的音乐。MuVi在音频质量和时间同步方面表现优于现有基线方法,并展示了其在风…...

对比两个el-table,差异数据突显标记

前言 在数据分析和数据处理的过程中&#xff0c;经常需要对比两个数据集&#xff0c;以便发现其中的差异和变化。本文将介绍如何使用 el-table 组件来对比两个数据集&#xff0c;并通过差异数据的突显标记&#xff0c;帮助用户更直观地理解数据的变化。 cell-style 属性 其实利…...

调研funasr时间戳返回时间坐标效果可用性

# 背景 : 分析funasr识别结果中每个中文字的时间戳偏差情况 1.评价指标: ①偏差公式: A=标注字的时间戳(帧长区间) B=识别字的时间戳(帧长区间) 偏差=(AB的区间并集-AB的区间交际) 偏差百分比=(AB的区间并集-AB的区间交际)/(A的帧长) def calculate_bias(la…...

Tomcat默认配置整理

Connector: 处理请求的具体配置 Tomcat的连接等待队列长度&#xff0c;默认是100 Tomcat的最大连接数&#xff0c;默认是8192 Tomcat的最小工作线程数&#xff0c;默认是10 Tomcat的最大线程数&#xff0c;默认是200 Tomcat的连接超时时间&#xff0c;默认是20s Server port…...

深入理解Rust中的指针:裸指针 智能指针

Rust是一种注重安全性的系统编程语言&#xff0c;它通过所有权、借用和生命周期等机制来保证内存安全。在Rust中&#xff0c;指针的使用是小心翼翼的&#xff0c;因为指针操作是导致内存错误的主要原因之一。然而&#xff0c;指针在处理底层数据和性能优化时又是必不可少的。本…...

物联网实训项目:绿色家居套件

1、基本介绍 绿色家居通过物联网技术将家中的各种设备连接到一起&#xff0c;提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。绿色家居提供全方位的信息交互功能&#xff0c;甚至为各种能源费…...

缓存雪崩是什么

背景 Redis的缓存雪崩是指在某一时间段内&#xff0c;大量缓存数据同时失效&#xff0c;导致大量请求直接打到数据库上&#xff0c;造成数据库压力激增&#xff0c;甚至可能导致数据库宕机。这种情况类似于雪崩效应&#xff0c;突然的大量请求涌入数据库&#xff0c;系统无法承…...

网站建设的关键问题/站长之家seo概况查询

http://www.jiawin.com/pace-js-automatic-page-load-progress-bar转载于:https://www.cnblogs.com/liuqiuchen/p/4674234.html...

网上推广方式/乐陵seo外包公司

1.题目 一只青蛙一次可以跳1级台阶&#xff0c;也可以跳2级。求该青蛙跳n级的台阶总共有多少种跳法。 2.思路 跳0级&#xff0c;f(0)0 跳1级&#xff0c;一次跳一级一种跳法&#xff0c;f(1)1 跳2级&#xff0c;第一次跳一级和第一次跳两级两种跳法&#xff0c;f(2)2 跳3…...

seo点击排名工具/抖音seo排名

CPU使用率高 找出使用率高的进程的pid top 1 找出使用率高的线程tpid top -p pid -H 1 查看使用率高的线程当前在干什么 jstack -l pid > stack.log// 将线程的tpid转为16进制&#xff0c;到stack.log中查找 grep tpid stack.log -a3 1234 GC问题 // -t&#xff1a;打印时间…...

金华市建设局网站贾润根/sem优化推广

1.复制&#xff1a;整体拷贝文件&#xff1b; 2.安装&#xff1a;一个一个拷贝文件&#xff1b;...

天元建设集团有限公司安全管理制度/广州seo排名优化公司

我在执行 SVN CO HTTP&#xff1a;// 的时候&#xff0c;出现了 svn: Unrecognized URL scheme的错误&#xff1a;&#xff08; 首先&#xff0c;大家可以在SVN 官方的FAQ的翻译中找到如下问题说明Subversion 使用外掛系統來存取檔案庫. 目前有三個這樣的外掛: ra_local 可以存…...

内江做网站的公司/百度指数功能模块有哪些

错误提示&#xff1a;System.Data.OleDb.OleDbException: 字段太小而不能接受所要添加的数据的数量。“/”应用程序中的服务器错误。-------------------------------------------------------------------------------- 字段太小而不能接受所要添加的数据的数量。试着插入或粘…...