17MyCat - 分片join(join 的概述)

简介: 17MyCat - 分片join(join 的概述)

Join绝对是关系型数据库中最常用一个特性,然而在分布式环境中,跨分片的join确是最复杂的,最难解决一个问题。

下面我们简单介绍下各种Join操作。

1:INNER JOIN

内连接,也叫等值连接,inner join产生同时符合A表和B表的一组数据,如图:

2:LEFT JOIN

左连接从A表(左)产生一套完整的记录,与匹配的B表记录(右表) .如果没有匹配,右侧将包含null,在Mysql中等同于left outer join,如图:

3:RIGHT JOIN

同Left join,AB表互换即可。

4:Cross join

交叉连接,得到的结果是两个表的乘积,即笛卡尔积笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

5:Full join

全连接产生的所有记录(双方匹配记录)在表A和表B。如果没有匹配,则对面将包含null。

性能建议

a:尽量避免使用Left join或Right join,而用Inner join

b:在使用Left join或Right join时,ON会优先执行,where条件在最后执行,所以在使用过程中,条件尽可能的在ON语句中判断,减少where的执行

c:少用子查询,而用join。

Mycat目前版本支持跨分片的join,主要实现的方式有四种。

全局表,ER分片,catletT(人工智能)和ShareJoin,ShareJoin在开发版中支持,前面三种方式1.3.0.1支持。

目录
相关文章
|
3月前
|
存储 Cloud Native 关系型数据库
PolarDB 并行查询问题之EXISTS子查询在并行查询中如何解决
PolarDB 并行查询问题之EXISTS子查询在并行查询中如何解决
31 1
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之处理类似JOIN和GROUP BY的复杂查询如何解决
PolarDB 并行查询问题之处理类似JOIN和GROUP BY的复杂查询如何解决
25 1
|
分布式计算 API 流计算
22MyCat - Spark/Storm 对join扩展(简略)
22MyCat - Spark/Storm 对join扩展(简略)
49 0
|
6月前
|
SQL 存储 分布式计算
一文讲解分布式场景怎么Join
发现System R中对于Join操作的定义一般分为了两种,即嵌套循环、排序-合并联接。在原文中,更倾向使用排序-合并联接逻辑。
83 4
|
6月前
|
SQL Oracle 关系型数据库
Oracle查询优化-left join、right join、inner join、full join和逗号的区别
【1月更文挑战第5天】【1月更文挑战第13篇】实际查询时,多表联查是常规操作,但是连接方式有多种。
563 0
|
存储
19MyCat - 分片join(ER Join)
19MyCat - 分片join(ER Join)
45 0
|
SQL 缓存
18MyCat - 分片join(全局表)
18MyCat - 分片join(全局表)
43 0
|
SQL
20MyCat - 分片join(Share join)
20MyCat - 分片join(Share join)
49 0
|
SQL 自然语言处理 算法
MySQL - Join关联查询优化 --- NLJ及BNL 算法初探
MySQL - Join关联查询优化 --- NLJ及BNL 算法初探
194 0
|
SQL 缓存 算法
MySQL关联查询Join的原理和优化
MySQL关联查询Join的原理和优化
771 1
MySQL关联查询Join的原理和优化