例如,下面的连接谓词定义了deptno列上的emp和dept表之间的连接: emp.deptno = dept.deptno 如果索引列是连接谓词的一部分,那么:在执行查询时,使用什么类型的连接方法来实现连接? 第一种 Hash / Sort Merge Join : 使用 Hash joins 和 Sort Merge Join,外部表的信息在连接时不可用,从而无法在内部表上进行行查找; 而是分别访问两个表,然后将结果数据连接起来。不能仅使用基于连接列的索引来探测哈希或排序合并的内部表。 这是这些连接类型使用的实现机制的固有限制。 Nested Loops Join的不同之处在于它们允许对连接列进行索引查找。 即:(1)Hash join散列连接是CBO 做大数据集连接时的常用方式,优化器使用两个表中较小的表(通常是小一点的那个表或数据源)利用连接键(JOIN KEY)在内存中建立散列表,将列数据存储到hash列表中,然后扫描较大的表,同样对JOIN KEY进行HASH后探测散列表,找出与散列表匹配的行。需要注意的是:如果HASH表太大,无法一次构造在内存中,则分成若干个partition,写入磁盘的temporary segment,则会多一个写的代价,会降低效率。 (2)Merge Join 是先将关联表的关联列各自做排序,然后从各自的排序表中抽取数据,到另一个排序表中做匹配 第二种 Nested Loops Join:嵌套循环连接的工作方式是读取外部表,然后使用收集到的信息探测内部表。该算法允许在内部表上进行索引查找。 只有 Nested Loops Join才能允许在内部表上仅基于连接列进行索引查找. 即:Nested loops 工作方式是循环从一张表中读取数据(驱动表outer table),然后访问另一张表(被查找表 inner table,通常有索引)。驱动表中的每一行与inner表中的相应记录JOIN。类似一个嵌套的循环。 另外,连接顺序是否允许使用索引?
当使用嵌套循环连接时,必须先访问嵌套循环连接的外部表,然后才能在内部表上使用索引。检查查询的解释计划,以确定使用了哪个访问路径以及访问表的顺序。由于这个限制,表的连接顺序很重要。
例如: 如果我们如上所述使用“EMP. deptno = DEPT .deptno”谓词将EMP连接到DEPT,并且在EMP. deptno上有一个索引(假设该谓词中没有与EMP. deptno相关的其他谓词) 后期待续
编辑推荐:
- Oracle SQL语句的谓词join如何利用索引03-03
- sqlplus 设置输出文件为不同的文件名称03-03
- 添加数据库无效对象监控03-03
- 如何查看rman 备份与恢复的进度03-03
- 业务软件系统升级前数据库备份03-03
- 查看Oracle表空间使用率03-03
- 优化Extract抽取进程性能,解决OGG抽取日志延迟 2017-11-12 175803-03
- 数据库数据恢复-ORACLE数据库的常见故障&各种故障下的数据恢复可能性03-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- ORA-39014问题处理
ORA-39014问题处理
26-03-03 - 淘宝的“泛娱乐化”自救?
淘宝的“泛娱乐化”自救?
26-03-03 - 直播、AI赋能,美团披着荆棘前行
直播、AI赋能,美团披着荆棘前行
26-03-03 - Oracle 11.2.0.4 创建普通表,区及段默认是否会分配
Oracle 11.2.0.4 创建普通表,区及段默认是否会分配
26-03-03 - 数据库 SQL执行时长
数据库 SQL执行时长
26-03-03 - 数据库内存交换异常 故障报告
数据库内存交换异常 故障报告
26-03-03 - 大模型加持,讯飞智能办公本X3助办公效率再提速
大模型加持,讯飞智能办公本X3助办公效率再提速
26-03-03 - 从线上化走向智能化,数字办公助力企业实现"效率+安全”双提升|爱分析报告
从线上化走向智能化,数字办公助力企业实现"效率+安全”双提升|爱分析报告
26-03-03 - enq:TX – row lock contention产生原因及处理脚本
- Oracle 11G 区管理方式
Oracle 11G 区管理方式
26-03-03
