关于表联结方法(一)(r3笔记第57天)
时间:2022-05-04
本文章向大家介绍关于表联结方法(一)(r3笔记第57天),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
分类: Oracle
在sql语句中,如果from后面有多个表时,关于表的联结方法是很重要的一个环节。 大体有nested loop join,hash join,merge join -->nested loop join 这种场景一般适用于大表和小表的关联,一般来说小表适用做为驱动表,对于小表中的匹配记录和大表做关联,这个时候小表是在外部循环,大表在内部循环,小表中的匹配记录都和大表做一个关联。
SQL> create table t as select *from dba_objects where object_id is not null;
SQL> create table t1 as select *from user_objects where object_id is not null;
SQL> exec dbms_stats.gather_table_stats(user,'T',cascade=>TRUE);
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>TRUE);
SQL> create unique index ind_t on t(object_id);
SQL> create unique index int_t1 on t1(object_id) ;
SQL> select count(*)from t;
COUNT(*)
----------
10783
下面的例子,t1表中的数据较少,表t中的数据多,就以表t1位驱动表,走了全索引扫描查取到t1的数据,然后对于t1中的数据和t做匹配,匹配的时候走了唯一性扫描
-->hash join 这种场景适合于大表和大表之间的关联。通过hash算法来做两个表之间的匹配映射。
SQL> create table t as select *from dba_objects where object_id is not null;
SQL> create table t1 as select *from dba_objects where object_id is not null;
SQL> exec dbms_stats.gather_table_stats(user,'T',cascade=>TRUE);
SQL> exec dbms_stats.gather_table_stats(user,'T1',cascade=>TRUE);
SQL> create unique index ind_t on t(object_id);
SQL> create unique index int_t1 on t1(object_id) ;
SQL> select count(*)from t;
COUNT(*)
----------
10783
对于表t1中的记录,都是通过hash映射来匹配t中的记录。可能对于cpu的资源消耗还是相对较多的,因为内部做了大量的计算。在生产环境中的实践来说,hash join还是不错的。特别是在和并行结合之后。
- MySQL和Oracle对比之存储过程(r5笔记第7天)
- 07.Java变量类型
- OAuth 2.0验证【面试+工作】
- MySQL备份恢复第一篇(r5笔记第5天)
- 经典面试问题: Top K 之 -- 海量数据找出现次数最多或,不重复的
- Java多线程详解4【面试+工作】
- Java多线程详解5【面试+工作】
- Java多线程详解6【面试+工作】
- MySQL备份恢复第二篇(r5笔记第6天)
- SpringMVC 中配置 Swagger 插件.
- MySQL和Oracle对比学习之事务(r5笔记第4天)
- 【面试宝典】Java如何打印数组
- MySQL数据导入导出牛刀小试(r5笔记第3天)
- SpringMVC 异常处理.
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Jmeter 常用函数(20)- 详解 __counter
- Jmeter 常用函数(21)- 详解 __char
- Jmeter 常用函数(22)- 详解 __intSum
- Jmeter 常用函数(23)- 详解 __longSum
- Jmeter 常用函数(24)- 详解 __digest
- you-dont-know-websocket
- Cent os 7之KVM虚拟化基础管理
- 常用 Maven 命令介绍
- Linux下diff命令用法详解
- 详解Numpy中的数组拼接、合并操作
- 批量更改图像尺寸到统一大小
- 张东升,我知道是你!如何使用GAN做一个秃头生产器
- Roslyn 在 NuGet 包中放注释 xml 文件的方法
- OpenCV3 图像的加载、修改、显示与保存
- 打卡群刷题总结0727——搜索旋转排序数组 II