Oracle之执行计划

news/2024/11/16 6:05:31/

1、查看执行计划

EXPLAIN PLAN FOR SELECT * FROM temp_1 a ;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

2、执行计划说明

2.1、执行顺序

根据缩进来判断,缩进最多的最先执行;(缩进相同时,最上面的最先执行)

2.2、常见表访问方式

2.2.1、TABLE ACCESS FULL(全表扫描)

Oracle会读取表中所有的行,并检查每一行是否满足SQL语句中的 Where 限制条件;
全表扫描时可以使用多块读(即一次I/O读取多块数据块)操作,提升吞吐量;
使用建议:数据量太大的表不建议使用全表扫描,除非本身需要取出的数据较多,占到表数据总量的 5% ~ 10% 或以上

2.2.2、TABLE ACCESS BY INDEX SCAN(索引扫描)

索引扫描方式说明
INDEX UNIQUE SCAN(索引唯一扫描)表中某字段存在 UNIQUE、PRIMARY KEY 约束时,Oracle常实现唯一性扫描,每次至多只返回一条记录
INDEX RANGE SCAN(索引范围扫描)在唯一索引列上使用了范围操作符(如:> < <> >= <= between);在组合索引上,只使用部分列进行查询(查询时必须包含前导列,否则会走全表扫描);对非唯一索引列上进行的任何查询
INDEX FULL SCAN(索引全扫描)它依赖数据库对象的统计信息,统计信息的准确与否会影响CBO做出最优的选择
INDEX FAST FULL SCAN(索引快速扫描)与 INDEX FULL SCAN 类似,但是一个显著的区别是它不对查询出的数据进行排序
INDEX SKIP SCAN(索引跳跃扫描)表有一个复合索引,且在查询时有除了前导列(索引中第一列)外的其他列作为条件,并且优化器模式为CBO时;当Oracle发现前导列的唯一值个数很少时,会将每个唯一值都作为常规扫描的入口,在此基础上做一次查找,最后合并这些查询

2.2.3、TABLE ACCESS BY ROWID(通过ROWID的表存取)

行的ROWID指出了该行所在的数据文件、数据块以及行在该块中的位置,所以通过ROWID可以快速定位到目标数据上,这也是Oracle中存取单行数据最快的方法

2.3、表连接方式

表连接方式说明
SORT MERGE JOIN(排序-合并连接)表无驱动顺序;排序-合并连接适用的连接条件有” < <= = > >= “,不适用的连接条件有” <> like“
NESTED LOOPS(嵌套循环)嵌套循环的表有驱动顺序,注意选择合适的驱动表。其好处是可以先返回已经连接的行,而不必等所有的连接操作处理完才返回数据,这样可以实现快速响应
HASH JOIN(哈希连接)哈希连接只适用于等值连接(即连接条件为 = )
CARTESIAN PRODUCT(笛卡尔积)笛卡尔乘积是一个表的每一行依次与另一个表中的所有行匹配

http://www.ppmy.cn/news/1022705.html

相关文章

github镜像网站

因为你懂的原因&#xff0c;ww.github.com就算修改hosts文件后&#xff0c;访问也不是很快&#xff0c;这里在某乎评论区找到几个镜像&#xff1a; GitHub: Let’s build from here、hub.yzuu.cf/、hub.nuaa.cf/、hub.fgit.ml/&#xff0c;这四个基本长期稳定 参考&#xff1a…

Vue-3.vue简介

什么是 Vue 基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型 Vue 的两个核心功能 声明式渲染&#xff1a;Vue 基于标准 HTML 拓展了一套模板语法&#xff0c;使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关…

RFID技术助力电子烟行业加速发展

RFID技术助力电子烟行业加速发展 近年来&#xff0c;电子烟行业迅速发展&#xff0c;不仅在全球范围内受到广泛关注&#xff0c;而且在市场上也取得了令人瞩目的成绩。为了提高电子烟行业的效率和管理水平&#xff0c;RFID技术被广泛应用于电子烟生产和销售环节。本文将通过一…

用模板元编程的方式判断一个结构体是否含有某成员函数

最近在看kdtree的东西找到一个只包含头文件的实现版&#xff0c;看到里面有这样一段代码一脸懵 template <typename T, typename int> struct has_resize : std::false_type {};查了一下才知道这个语句是一个用于进行模板元编程的定义。它定义了一个模板结构体 has_resi…

Kubernetes pod调度约束[亲和性 污点] 生命阶段 排障手段

调度约束 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 Pod 和 Container。 APIServer…

【JUC】复习指南

JUC复习指南&#xff1a; JUC有哪些知识点&#xff1f; 什么是Juc Lock接口 线程间通信 集合的线程安全问题 多线程锁 Callable接口 JUC三大辅助类 CountDownLatch CyclicBarrier Semaphore 读写锁 ReetrantReadWriteLOck 阻塞队列 ThreadPool线程池 Fork/join Com…

element中select下拉框如何实现宽度自适应

简单暴力&#xff1a; element 和 elementPlus 都可以直接在el-select上添加 style"width: 100%" 解决 <el-select style"width: 100%" v-model"cats" multiple filterable placeholder"请选择分类"> . . . </el-select&…

C语言错题之 10

前言 不知不觉这个专栏都更到第十篇文章了&#xff0c;真快啊&#xff0c;继续加油。 今天给大家带来的是六道选择题&#xff0c;明天会出五道我最近在做题的时候遇到的有意思的编程题。 话不多说&#xff0c;直接看今天的题。 1. 题干&#xff1a; 下面代码的运行结果是&a…