1.Join Inner table Outer table SQL

http://blog.sina.com.cn/s/blog_3f9c47d70100pkjw.html
Inner Table:内表就是只提供匹配记录信息的表;
Outer Table:外表是指对外联结同时提供未匹配记录信息的表.

2.MySQL-join的实现原理、优化及NLJ算法

https://www.cnblogs.com/JohnABC/p/7150921.html
NLJ算法:即 Nested Loop Join,就是扫描一个表(外表,也叫驱动表),每读到一条记录,就根据 join 字段上的索引去另一张表(内表)里查找。内表(一般是带索引的表)被外表(也叫驱动表,一般为小表,不仅相对其他表为小表,而且记录数的绝对值也小,不要求有索引)驱动,外表返回的每一行都要在内表中检索与其匹配的行,因此整个返回的结果集不能太大(大于 1 万不适合)。

驱动表:就是在嵌套循环连接和哈希连接中,用来最先获得数据,并以此表的数据为依据,逐步获得其他表的数据,直至最终查询到所有满足条件的数据的第一个表。驱动表不一定是表,有可能是数据集,即由某个表中满足条件的数据行,组成子集合后,再以此子集合作为连接其他表的数据来源。这个子集合,才是真正的驱动表,有时候为了简洁,直接将最先按照条件或得子集合的那张表叫做驱动表。我们常说,驱动表一定是小表,指的是根据条件获得的子集合一定要小,而不是说实体表本身一定要小,大表如果获得的子集合小,一样可以简称这个大表为驱动表。

BLJ 算法:即 Block Nested-Loop Join,是MySQL 自己创建的方式。将指定的外层键对应的被驱动表缓存起来以提高性能。

Join操作使用内存(join_buffer_size):应用程序经常会出现一些两表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的时候(all/index join),为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作(具体 Join 实现算法请参考:MySQL中的 Join基本实现原理)。当 Join Buffer太小,MySQL不会将该 Buffer存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join 的表进行 Join操作,然后清空 Join Buffer中的数据,继续将剩余的结果集写入此 Buffer中,如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO访问,降低效率。

sql中的join问题相关推荐

  1. SQL中cross join,left join,right join ,full join,inner join 的区别

    http://blog.csdn.net/sgivee/article/details/5081350 SQL中cross join,left join,right join ,full join,i ...

  2. SQL中inner join、outer join和cross join的区别

    对于SQL中inner join.outer join和cross join的区别很多人不知道,我也是别人问起,才查找资料看了下,跟自己之前的认识差不多,如果你使用join连表,缺陷的情况下是inne ...

  3. SQL中inner join、left join、right join、outer join之间的区别

    SQL中inner join.left join.right join.outer join之间的区别 举个例子你就能知道了! A表(a1,b1,c1)      B表(a2,b2) a1   b1  ...

  4. SQL 中left join ,inner join,right join的区别

    2019独角兽企业重金招聘Python工程师标准>>> sql中存在有左连接  插入 右连接 sql语句 left join ,inner join,right join 进行 wh ...

  5. SQL中的join操作总结(非常好)

    1.1.1 摘要 Join是关系型数据库系统的重要操作之一,SQL Server中包含的常用Join:内联接.外联接和交叉联接等.如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的 ...

  6. Access SQL中Left Join、Right Join和Inner Join的使用

    1.表结构 表A                                     表B 2.Left Join 示例:2.1 Select * From A left join B on A. ...

  7. SQL 中 left join、right join、inner join 的区别

    SQL 三个 join 的含义 left join(左联接):返回左表中的所有记录以及和右表中的联接字段相等的记录. right join(右联接):返回右表中的所有记录以及和左表中的联接字段相等的记 ...

  8. SQL 中 left join 的底层原理(各种JOIN的复杂度探究)

    01. 前言 写过或者学过 SQL 的人应该都知道 left join,知道 left join 的实现的效果,就是保留左表的全部信息,然后把右表往左表上拼接,如果拼不上就是 null.除了 left ...

  9. 你知道 Sql 中 left join 的底层原理吗?

    总第165篇/张俊红 01.前言 写过或者学过 Sql 的人应该都知道 left join,知道 left join 的实现的效果,就是保留左表的全部信息,然后把右表往左表上拼接,如果拼不上就是 nu ...

  10. SQL中 left join 左表合并去重实用技巧

     作者:ZhaoYingChao88 zyc88.blog.csdn.net/article/details/83002882 建表: CREATE TABLE `table1` (`id` int( ...

最新文章

  1. 对于Wannacry“永恒之蓝”病毒 查看自己电脑是否安全
  2. mysql 导入导出摘要
  3. ospaf-开源项目成熟度分析工具
  4. [optee]-opteeTA启动的过程(open_ta的过程)
  5. 基于MFCC系数的欧氏距离测量
  6. tensorflow随笔-读取多个文件
  7. java信号灯_java 多线程-信号灯法
  8. ant 改变表格数据_表格技巧—Excel表格怎么替换数字
  9. 模态窗口和非模态窗口
  10. Linux下一些简单命令的收集
  11. aix errpt输出详解
  12. 二维函数Z=g(X,Y)型,用卷积公式求概率密度,积分区域如何确定(上)
  13. java对象命名_Java编码规范(命名规则).
  14. Spring5学习笔记——【遇见狂神说】[IoC、DI、AOP]
  15. QTableWidget 数据添加与表头设置
  16. 关于英语论文范文参考步骤的详细介绍
  17. 人们说程序员很高大上,程序员是做编程的,编程又是做什么呢?
  18. 【LaTeX】表格调整行高、列宽、合并显示等操作
  19. 吉他屋-吉他谱-吉他教程
  20. nginx完全卸载删除

热门文章

  1. Oracle底子根基数据圭臬尺度存储格式浅析(三)——日期圭臬尺度(四)
  2. MOSS总弹出登陆框的问题
  3. 认真去做,我会做得很棒!
  4. POJ 3360 H-Cow Contest
  5. huawei交换机普通远程登陆配置
  6. Ubuntu下安装nginx支持rtmp和http流媒体方案
  7. 软件工程理论、方法与实践(第三章)
  8. matplotlib-legend 位置属性 loc 使用
  9. NeurIPS'21|MixSeq:从微观数据到宏观时序预测的桥梁
  10. 【收藏】机器学习与深度学习核心知识点总结