加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Apache Flink 漫谈系列 - JOIN 算子

发布时间:2018-11-20 20:07:11 所属栏目:教程 来源:孙金城
导读:聊什么 在《Apache Flink 漫谈系列 - SQL概览》中我们介绍了JOIN算子的语义和基本的使用方式,介绍过程中大家发现Apache Flink在语法语义上是遵循ANSI-SQL标准的,那么再深思一下传统数据库为啥需要有JOIN算子呢?在实现原理上面Apache Flink内部实现和传统

这两个过程和上面分析的INNER JOIN一样,但是这时候能否利用上面说的 filter push down的优化呢?根据LEFT OUTER JOIN的语义来讲,答案是否定的。我们手工操作看一下:

  • 第一步:先进行过滤查询(获得一个空表)
    1. mysql> SELECT * FROM score s WHERE s.score is NULL; 
    2. Empty set (0.00 sec) 
  • 第二步: 进行左外链接
    1. mysql> SELECT 
    2.     ->   no, name , s.c_no, s.score 
    3.     -> FROM student stu LEFT JOIN (SELECT * FROM score s WHERE s.score is NULL) AS s ON sstu.no = s.s_no; 
    4. +------+-------+------+-------+ 
    5. | no   | name  | c_no | score | 
    6. +------+-------+------+-------+ 
    7. | S001 | Sunny | NULL |  NULL | 
    8. | S002 | Tom   | NULL |  NULL | 
    9. | S003 | Kevin | NULL |  NULL | 
    10. +------+-------+------+-------+ 
    11. 3 rows in set (0.00 sec) 

我们发现两种写法的结果不一致,第一种写法只返回Tom没有参加考试,是我们预期的。第二种写法返回了Sunny,Tom和Kevin三名同学都没有参加考试,这明显是非预期的查询结果。所有LEFT OUTER JOIN不能利用INNER JOIN的 filter push down优化。

4. RIGHT OUTER JOIN

右外链接语义是返回右表所有行,左边不存在补NULL,如下:

  1. mysql> SELECT 
  2.     ->   s.c_no, s.score, no, name 
  3.     -> FROM score s RIGHT JOIN student stu ON sstu.no = s.s_no; 
  4. +------+-------+------+-------+ 
  5. | c_no | score | no   | name  | 
  6. +------+-------+------+-------+ 
  7. | C01  |    80 | S001 | Sunny | 
  8. | C02  |    98 | S001 | Sunny | 
  9. | C03  |    76 | S001 | Sunny | 
  10. | NULL |  NULL | S002 | Tom   | -- 左边没有的进行补 NULL 
  11. | C01  |    78 | S003 | Kevin | 
  12. | C02  |    88 | S003 | Kevin | 
  13. | C03  |    68 | S003 | Kevin | 
  14. +------+-------+------+-------+ 
  15. 7 rows in set (0.00 sec) 

上面右外链接我只是将上面左外链接查询的左右表交换了一下:)。

5. FULL OUTER JOIN

全外链接语义返回左表和右表的并集,不存在一边补NULL,用于演示的MySQL数据库不支持FULL OUTER JOIN。这里不做演示了。

6. SELF JOIN

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读