看完这章你会学习到以下内容:
1. 三种关联分别是什么?
2. 什么时候那个适合用哪个?(总结)


一共有三种关联机制:
Nest Loop 嵌套循环 (大小表)
Sort Merge 排序合并 (添加索引+两张大表)
Hash Join 哈希 (内联)


嵌套循环

对上图进行简单的解释,在进行嵌套循环的时候,通常情况是(大表+小表)的形式,并且会以小表作为内表,因为小表可以常驻内存,这样当进行磁盘IO的时候,只有大表会产生开销;反之,如果因为大表过大,则大表不能常驻内存,内外表的数据均存在与磁盘中,这样,进行磁盘IO开销是非常“可观”的

解释了,谁做内外表的问题后,看下嵌套关联的操作过程:

1.取得要操作的表空间
2.对表空间的记录进行排序
3.通过嵌套循环进行赛选(如果是双表,可能是两个for嵌套)
4.获得需求的记录

归并关联

对与归并关联,有着很好的时间复杂度(如果两个表中的元素已经排序,如果未排序,时间开销可能为XlogX + YlogY + X + Y)。

那么,如何对排序好的元素进行关联呢:

1.首先每张表,会有一个指向头元素的指针
2.两个指针,进行比较,如果相同,则提出该元素
3.比较后续元素,谁小谁先向下移动
4.如此,一直到各自表的结尾

Hash关联(散列关联)

散列关联,则是对表进行散列后(不可超过内存的大小),另外一张表进行匹配;通常来说被散列的依旧是小表,匹配的过程需要匹配全部元素。

以上三种,根据以上三种关联方式,可以大致了解到一定的sql语句的原理以及调优机制,即为什么有的时候会加索引、或者不加、或者改变内外表的关联。总结:


版权声明:本文为CSDN博主「Anger_Coder」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:Study-Hard-数据库连接及实现内部原理(下)_Anger_Coder的专栏-CSDN博客

powerdesigner 怎么关联两张表_【PL/SQL数据库】 三种关联机制 - 执行计划相关推荐

  1. pl/sql中三种游标循环效率对比

    pl/sql中三种游标循环效率对比 - Oracle数据库栏目 - 红黑联盟 http://www.2cto.com/database/201307/224636.html 转载于:https://b ...

  2. mysql 查询两张表结构相同的数据库_利用反射处理多个表结构相同的数据的查询和数据库表的关联...

    最近做一个项目,需要对人口数据进行查询,但是人口数据分布在不同的街道表中,首先进行了数据表结构的统一,每个数据表以街道名开头,然后其他的名字都一样 前期将各个表中的字段也进行了统一 抽象出一张字典表 ...

  3. mysql查找两表中不同的数据库表_各位大侠怎样查找两张表的里面的数据(这两张表在不同的数据库)...

    Oracle: 一.同一个实例中的两个表 相应有两个用户a(表t1).b(表t2) 将用户a的t1查询权限授予b用户 grant select on t1 to b; 之后,b就可以查询t1表了 se ...

  4. mysql一次查询无关联多个表_面试官:为什么mysql不建议执行超过3表以上的多表关联查询?...

    点关注,不迷路:持续更新Java架构相关技术及资讯热文!!! 概述 前段时间在跟其他公司DBA交流时谈到了mysql跟PG之间在多表关联查询上的一些区别,相比之下mysql只有一种表连接类型:嵌套循环 ...

  5. mysql两表左关联_mysql中一张表LEFT JOIN 左关联两张表语句

    先看实例 代码如下 复制代码 SELECT p.price, pd.name, m.manufacturers_name FROM (products p LEFT JOIN products_des ...

  6. mysql 查询两张表结构相同的数据库_数据库原理习题(含答案)

    第一章绪论 Ⅰ.学习要点 1.准确掌握数据.数据库.数据库系统.数据库管理系统等基本术语.概念: 2.数据独立性的概念.分类及实现途径: 3.数据模型的概念.分类.要素及作用: 4.数据库三级模式体系 ...

  7. java while九九乘法表_用java实现三种方法循环输出九九乘法表:

    展开全部 for循环的结构:for(表达式 1:表达式 2:表达式  3) {  循环体  } 表达式 1:一般为赋值表达式:62616964757a686964616fe78988e69d83313 ...

  8. java同步异步调用_详解java 三种调用机制(同步、回调、异步)

    1:同步调用:一种阻塞式调用,调用方要等待对方执行完毕才返回,jsPwwCe它是一种单向调用 2:回调:一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口: 3:异步调用:一种类似消 ...

  9. mysql比对表中数据是否相同_如何用sql比较两张表数据是否一致?

    在批量程序的测试中,经常会涉及到对数据库表的测试,今天我们来介绍一下用sql比较两张表结构相同的表数据是否完全一致的方法. 1.inner join 浅尝 提到比对两张表的数据是否完全相同,很容易想到 ...

最新文章

  1. IMXRT10xx MDK 编译器AC5 升级AC6
  2. Azure SQL 数据库引入了新的服务级别
  3. FI_ITEMS_MASS_CHANGE 批量更新 凭证文本 (凭证被锁、一些项目没更改到的解决方法)
  4. P1351 联合权值
  5. 单例模式,双重检查实现线程安全
  6. idc服务器管理系统勇士水花,idc管理系统
  7. 【学习笔记】数据链路层——随机访问介质访问控制(ALOHA、CSMA、CSMA/CD、CSMA/CA),截断二进制指数规避算法
  8. excel插入一列日期 pandas_在Excel目标列插入日期控件的方法
  9. MaxCompute Studio使用心得系列3——可视化分析作业运行
  10. C/C++位域知识小结
  11. atitit.userService 用户系统设计 v6 q413
  12. 读书笔记之深入理解Java虚拟机
  13. Windows XP sp3上可以安装SQL Server 2008企业版?
  14. php7.2 加密,php 7.2 aes 128 ECB 加密
  15. 638-字符串模式匹配-KMP算法
  16. 学python对数学要求高吗_想要学好python编程一定要求数学要好吗?
  17. Zookeeper-Paxos-屁民的故事-内含视频讲解
  18. MAK VR-Forces 3.7
  19. 苹果双系统 计算机意外的重新启动,用Boot camp 安装双系统时突然重启,打… - Apple 社区...
  20. unity给定两个点和中间点的其中一个坐标比如z坐标,求该点的坐标

热门文章

  1. 《R语言与统计分析》-参数的假设检验
  2. 联想启天m420刷bios_联想启天M420装Win7系统教程包括BIOS设置和USB驱动
  3. vce 题库导入_Visual CertExam(VCE)试题制作教程 -
  4. LINUX 安装MegaRAID Storage Manager (MSM)安装使用教程
  5. Photoshop制作个性的透明玻璃网页用户信息
  6. 2022-2028年全球与中国飞机轮胎行业发展趋势及竞争策略研究
  7. 量化策略指引:Alpha也有周期?
  8. 前端路线--Vue(day01)
  9. 常用的几种在线地图(天地图、百度地图、高德地图)坐标系之间的转换算法
  10. 做网站是否一定需要seo