Oracle关联机制

目录

1. 关联机制

1.1 循环嵌套关联 ( NESTED LOOPS JOIN) :大小表关联

1.2 哈希关联 (HASH JOIN ):两张大表

1.3 排序合并关联 (SORT MERGE JOIN):有索引的两张表.

2. HINTS (提示符) 优化

--高水位线


1. 关联机制
1.1 循环嵌套关联 ( NESTED LOOPS JOIN) :大小表关联

首先两个表关联后,小表为内侧表,大表作为外侧表,确定外侧表和内侧表的连接后,将外侧表作为驱动表,内侧表作为被驱动表,根据驱动表的连接条件进行筛选.最后获得驱动表的数据合集.

运用场景: 大小表关联,被驱动表的数据不能超过内存,或者直接使用索引得到匹配的记录.

小表驱动大表:

 FOR (20条数据)
 FOR  { 20 W 条数据 }
   
 --小表在外面 ,表连接只需20次
 
大表驱动小表: 
 FOR (202条数据)
 FOR  { 20 条数据 }
 
-- 大的在外面的话,表连接需要20w次
总结: 小表驱动大表的主要目的就是减少表的连接次数,加快查询速度.

1.2 哈希关联 (HASH JOIN ):两张大表

-- 两张数据相差不大,并且还是等值关联.在关联的时候,会先对关联字段做哈希值计算,计算完,再拿哈希值匹配.

1.3 排序合并关联 (SORT MERGE JOIN):有索引的两张表.

-- 先对关联字段做一个排序,再拿排好顺序的数据做关联,适合有索引的两张表.如果有索引,就可以排除排序,这样可以大大提高这种连接操作的连接速度,特别是对于较大的表。

2. HINTS (提示符) 优化

1、/*+ PARALLEL(表名1,并行数)[(表名2,并行数)……] */ --指定开启多少个并行|并发(一般为2、4、8……)
2、/*+ INDEX(表名,索引名) */ --指定索引扫描
3、/*+ FULL(表名) */ --指定全表扫描
4、/*+ USE_NL(表名1,表名2) */ --指定用NESTED LOOP连接
5、/*+ USE_HASH(表名1,表名2) */ --指定用HASH连接
6、/*+ USE_MERGE(表名1,表名2) */ --指定用SORT MERGE JOIN
7、/*+ LEADING(表名1,表名2) */ --指定表1作为被驱动表
8、/*+ APPEND */ --数据直接插入到高水位上面(与insert连用)直接往后面插,无视前面的水位置

 案例

-- 优化器自动选择的是 SORT MERGE关联

SELECT
* 
FROM EMP E
JOIN DEPT D
ON E.DEPTNO = D.DEPTNO; 

--根据提示符选择的关联方式

SELECT /*+ USE_NL(E, D) LEADING(D, E) */ 
* 
FROM EMP E
JOIN DEPT D
ON E.DEPTNO = D.DEPTNO;
--高水位线

-- 在使用 DELETE 删除数据时,会因为碎片问题,存在高水位线
-- 高水位线存在的话,会导致后面的数据插入性能降低
-- 解决高水位的方法:

insert /*+ APPEND */  into 表名

--对数据进行备份,使用 TRUNCATE TABLE 方式 干掉数据,然后重新导入数据

-- 截断表

TRUNCATE TABLE 

CREATE TABLE B 
AS 
SELECT * FROM A 
-- 不会复制水位线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch 如何训练一个模型

定义网络结构: 确定深度学习网络的架构,包括卷积层、池化层、全连接层等组件的设计。 准备数据集: 使用 DataLoader 从数据集中读取数据,也可使用现有的数据集。 定义损失函数和优化器: 选择合适的损失函数来衡量模…

python经典百题之根据值打印*

题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的 *。 程序分析 我们需要读取7个整数值,每个值在范围1到50之间,然后根据每个值的大小打印相应数量的星号(*&…

ios safari 浏览器跳转页面没有自适应

今天开发遇到了一个问题,当用户点击浏览器中的表单进行注册时,表单元素会放大,随后跳转页面无法还原到初始状态。 这是因为如果 的 font-size 被设定为 16px 或更大,那么 iOS 上的 Safari 将正常聚焦到输入表单中。但是&#xff…

2023版 STM32实战8 独立看门狗(IWDG)

IWDG简介 STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。 说人话就是能解决程序跑飞的问题。 编写代码思路 -1- 使用这个功能必须解除写保护 -2-…

FLIP动画做拖拽排序效果

先来看效果 index.html文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content&quo…

H - 提瓦特之旅 2022CCPC女生赛

H - 提瓦特之旅 原题链接&#xff1a; https://vjudge.net/contest/532518#problem/H 题意&#xff1a; 一个有n个点&#xff0c;m条边的无向图&#xff0c;从u点到v点花费的时间和从v到u花费的时间都是C&#xff08;u&#xff0c;v&#xff09;&#xff0c;并且当经过路上的…

Netty深入浅出(无处不在的IO)

为什么要有Netty Netty是为了解决网络编程的复杂性和提供易于使用、高性能和可扩展的框架而开发的。它通过提供一组可重用的组件来处理网络通信的低级细节&#xff0c;例如套接字管理、线程和缓冲&#xff0c;简化了开发网络应用程序的过程。这使开发人员可以专注于应用程序逻…

自然语言处理 | WordNet

WordNet是词汇数据库,即英语词典,专为自然语言处理而设计。 Synset是一种特殊的简单接口,存在于 NLTK 中, 用于在 WordNet 中查找单词。同义词集实例是表达相同概念的同义词的分组。有些单词只有一个同义词集,有些则有多个。

C#对字典容器Dictionary<TKey, TValue>内容进行XML序列化或反序列化报错解决方法

一、问题描述 在使用C#对字典容器Dictionary<TKey, TValue>内容进行XML序列化报错【System.Exception:“不支持类型 System.Collections.Generic.Dictionary2[[System.String, mscorlib, Version2.0.0.0, Cultureneutral, PublicKeyTokenb77a5c561934e089],[System.Strin…

基于matlab统计Excel文件一列数据中每个数字出现的频次和频率

一、需求描述 如上表所示&#xff0c;在excel文件中&#xff0c;有一列数&#xff0c;统计出该列数中&#xff0c;每个数出现的次数和频率。最后&#xff0c;将统计结果输出到新的excel文件中。 二、程序讲解 第一步&#xff1a;选择excel文件&#xff1b; [Filename, Pathn…

C++笔记之信号量、互斥量与PV操作

C笔记之信号量、互斥量与PV操作 文章目录 C笔记之信号量、互斥量与PV操作1.信号量概念2.信号量例程一3.信号量例程二4.信号量例程三5.互斥量6.PV操作概念7.PV操作详解——抄自&#xff1a;https://mp.weixin.qq.com/s/vvjhbzsWQNRkU7-b_dURlQ8.PV操作的英文全称 1.信号量概念 …

HTTPS建立连接的过程

HTTPS 协议是基于 TCP 协议的&#xff0c;因而要先建立 TCP 的连接。在这个例子中&#xff0c;TCP 的连接是在手机上的 App 和负载均衡器 SLB 之间的。 尽管中间要经过很多的路由器和交换机&#xff0c;但是 TCP 的连接是端到端的。TCP 这一层和更上层的 HTTPS 无法看到中间的包…

拼多多API接口的使用方针如下:

了解拼多多API接口 拼多多API接口是拼多多网提供的一种应用程序接口&#xff0c;允许开发者通过程序访问拼多多网站的数据和功能。通过拼多多API接口&#xff0c;开发者可以开发各种应用程序&#xff0c;如店铺管理工具、数据分析工具、购物比价工具等。在本章中&#xff0c;我…

Hive面试常见基础问题

以下是一些Hive面试问题和答案&#xff1a; Hive是什么&#xff1f; 答&#xff1a;Hive是一个开源的数据仓库工具&#xff0c;用于处理和分析大规模结构化数据。它能够创建、修改和查询表结构&#xff0c;支持多种数据类型和查询操作&#xff0c;同时提供数据汇总和数据查询的…

Spring中的设计模式

目录 工厂模式 组合模式 适配器模式 代理模式 单例模式 观察者模式 模板方法模式 责任链模式 Spring有着非常优雅的设计&#xff0c;很多地方都遵循SOLID原则&#xff0c;里面的设计模式更是数不胜数大概有以下几种&#xff1a; 工厂模式 所谓的工厂模式&#xff0c;核…

<HarmonyOS第一课>从简单的页面开始——闯关习题及答案

加入鸿蒙应用开发公开课系统学习HarmonyOS应用开发 判断题 1.在Column容器中的子组件默认是按照从上到下的垂直方向布局的&#xff0c;其主轴的方向是垂直方向&#xff0c;在Row容器中的组件默认是按照从左到右的水平方向布局的&#xff0c;其主轴的方向是水平方向。&#xff…

在MySQL中使用!=还能走索引吗?

在MySQL中使用!还能走索引吗&#xff1f; 一般情况下&#xff0c;我们会在一个索引上较多的使用等值查询或者范围查询&#xff0c;此时索引大多可以帮助我们极快的查询出我们需要的数据。 那当我们在where条件中对索引列使用!查询&#xff0c;索引还能发挥他的作用吗&#xf…

vue3 中使用 echarts 图表——准备篇

我们常常在项目中使用图表来表示数据&#xff0c;而目前最常用的图标就是echarts&#xff0c;接下来我们就开始学习在vue中使用echarts图标。 一、准备一个vue项目&#xff08;一般通过vite来构建&#xff0c;而不是vue-cli&#xff09; 1.找到打开vite官网 2. 运行创建命令 …

英语字典的一些 关键字 解释:

1. specialized &#xff1a;专业术语 这里的specialized 后面还接了 finance & economics 含义是 在经济和金融的领域&#xff0c;principal 作为一个专业术语&#xff0c;含义是 “本金&#xff0c;可生息资本” 2. XXXXXX

【数据库系统概论】数据查询之单表查询。详细解释WHERE、OEDER BY、GROUP BY 和 HAVING

前言 ❓单表查询选择表中的若干列查询经过计算的值选择表中的若干元组&#xff08;行&#xff09;消除取值重复的行查询满足条件的元组&#xff08;WHERE&#xff09; 对查询结果排序&#xff08;ORDER BY&#xff09;聚集函数对查询结果分组&#xff08;GROUP BY&#xff09; …