mysql join

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 查询 '产品的名字和公司的名字' 从产品表左连接公司表,再左连接用户表,product->company->user ① 有where条件:用户名是‘sdf’ mysql> explain select product.

查询 '产品的名字和公司的名字' 从产品表左连接公司表,再左连接用户表,product->company->user

① 有where条件:用户名是‘sdf’

mysql> explain select product.name pname,company.name cname 
          from product 
          left join company using(cid)
          left join user using(cid) 
          where user.name = 'sdf' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: user
type: ref
possible_keys: cid,ux
key: ux
key_len: 19
ref: const
rows: 1
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: product
type: ref
possible_keys: cid
key: cid
key_len: 5
ref: info.user.cid
rows: 1
Extra: Using where
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: company
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: info.product.cid
rows: 1
Extra:

 

②无where条件

mysql> explain select product.name pname,company.name cname 
          from product
          left join company using(cid)
          left join user using(cid) \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: product
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 14
Extra:
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: company
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: info.product.cid
rows: 1
Extra:
*************************** 3. row ***************************
id: 1
select_type: SIMPLE
table: user
type: ref
possible_keys: cid
key: cid
key_len: 5
ref: info.product.cid
rows: 1
Extra: Using index
3 rows in set (0.00 sec)

 

结论1:当有where条件时用到了三个表的索引(有的用到了主键索引)

结论2:先 where 再 join ,先处理有where的表,再按join顺序处理表

结论3:join 的顺序在第二个实例中先是对product表全表扫描

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
关系型数据库 MySQL
mysql join 实践
mysql join 实践
22 0
|
6月前
|
SQL 算法 关系型数据库
深入理解MySQL中的Join算法
在数据库处理中,Join操作是最基本且最重要的操作之一,它能将不同的表连接起来,实现对数据集的更深层次分析。
340 8
深入理解MySQL中的Join算法
|
7月前
|
关系型数据库 MySQL
Mysql join 连接查询
Mysql join 连接查询
24 0
|
4月前
|
关系型数据库 MySQL
MySQL left join 查询 多条数据
MySQL left join 查询 多条数据
44 0
|
1月前
|
存储 算法 关系型数据库
MySQL的JOIN到底是怎么玩的
在MySQL中,查询操作通常会涉及到联结不同表格,而JOIN命令则在这一过程中扮演了关键角色。在JOIN操作中,我们通常会使用三种不同的方式,分别是内连接、左连接以及右连接。
|
4月前
|
关系型数据库 MySQL 数据库
MySQL 数据库操作指南:LIMIT,OFFSET 和 JOIN 的使用
您可以通过使用"LIMIT"语句来限制查询返回的记录数量。以下是一个示例,获取您自己的Python服务器中"customers"表中的前5条记录:
94 1
|
5月前
|
关系型数据库 MySQL 索引
mysql join
mysql join
38 0
|
8月前
|
关系型数据库 MySQL
关于MySQL中的LEFT JOIN和LEFT OUTER JOIN的区别
LEFT JOIN是LEFT OUTER JOIN的简写版;
116 0
|
8月前
|
SQL 算法 关系型数据库
MySQL中的Join 的算法(NLJ、BNL、BKA)
MySQL中的Join 的算法(NLJ、BNL、BKA)
148 0
|
8月前
|
关系型数据库 MySQL
MySQL left join 查询 多条数据
MySQL left join 查询 多条数据
170 0