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支持。

目录
相关文章
|
8月前
|
关系型数据库 MySQL
MySQL left join 查询 多条数据
MySQL left join 查询 多条数据
129 0
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之处理类似JOIN和GROUP BY的复杂查询如何解决
PolarDB 并行查询问题之处理类似JOIN和GROUP BY的复杂查询如何解决
37 1
|
5月前
|
SQL 关系型数据库 MySQL
Mysql中from多表跟join表的区别
Mysql中from多表跟join表的区别
367 0
|
8月前
|
SQL 存储 分布式计算
一文讲解分布式场景怎么Join
发现System R中对于Join操作的定义一般分为了两种,即嵌套循环、排序-合并联接。在原文中,更倾向使用排序-合并联接逻辑。
95 4
|
SQL 缓存
18MyCat - 分片join(全局表)
18MyCat - 分片join(全局表)
47 0
|
存储
19MyCat - 分片join(ER Join)
19MyCat - 分片join(ER Join)
53 0
|
SQL
20MyCat - 分片join(Share join)
20MyCat - 分片join(Share join)
60 0
|
SQL
07SQL - letf join 和 inner join 的 区别
07SQL - letf join 和 inner join 的 区别
72 0
|
SQL 缓存 算法
MySQL关联查询Join的原理和优化
MySQL关联查询Join的原理和优化
837 1
MySQL关联查询Join的原理和优化
|
存储 自然语言处理 索引
xunsearch,如果一个业务需求,需要Left join五张数据表,这样需要创建几个索引?如何导入数据?底层原理是什么?
xunsearch,如果一个业务需求,需要Left join五张数据表,这样需要创建几个索引?如何导入数据?底层原理是什么?
113 0

相关课程

更多