mysql join

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
RDS AI 助手,专业版
简介: 查询 '产品的名字和公司的名字' 从产品表左连接公司表,再左连接用户表,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表全表扫描

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL 算法 关系型数据库
深入理解MySQL中的Join算法
在数据库处理中,Join操作是最基本且最重要的操作之一,它能将不同的表连接起来,实现对数据集的更深层次分析。
1691 8
深入理解MySQL中的Join算法
|
关系型数据库 MySQL
mysql join 实践
mysql join 实践
142 0
|
SQL 关系型数据库 MySQL
MySQL 之 LEFT JOIN 避坑指南
MySQL 之 LEFT JOIN 避坑指南
735 1
|
关系型数据库 MySQL
Mysql join 连接查询
Mysql join 连接查询
206 0
|
关系型数据库 MySQL
MySQL left join 查询 多条数据
MySQL left join 查询 多条数据
448 0
|
算法 关系型数据库 MySQL
join查询可以⽆限叠加吗?MySQL对join查询有什么限制吗?
大家好,我是 V 哥。本文详细探讨了 MySQL 中 `JOIN` 查询的限制及其优化方法。首先,`JOIN` 查询不能无限叠加,存在资源(CPU、内存、磁盘 I/O)、性能和语法等方面的限制。过多的 `JOIN` 操作会导致数据库性能急剧下降。其次,介绍了三种常见的 `JOIN` 查询算法:嵌套循环连接(NLJ)、索引嵌套连接(INL)和基于块的嵌套循环连接(BNL),并分析了它们的触发条件和性能特点。最后,分享了优化 `JOIN` 查询的方法,包括 SQL 语句优化、索引优化、数据库配置调整等。关注 V 哥,了解更多技术干货,点赞👍支持,一起进步!
350 3
|
算法 关系型数据库 MySQL
浅析MySQL Join Reorder算法
本文浅析了MySQL Join Reorder算法的流程,cost计算,剪枝算法等,希望通过本文能帮助大家了解MySQL优化器生成执行计划的具体流程。
|
存储 关系型数据库 MySQL
mysql中的left join、right join 、inner join的详细用法
【8月更文挑战第16天】在MySQL中,`INNER JOIN`、`LEFT JOIN`与`RIGHT JOIN`用于连接多表。`INNER JOIN`仅返回两表中匹配的行;`LEFT JOIN`保证左表所有行出现于结果中,右表无匹配时以NULL填充;`RIGHT JOIN`则相反,保证右表所有行出现于结果中。例如,查询学生及其成绩时,`INNER JOIN`仅显示有成绩的学生;`LEFT JOIN`显示所有学生及他们对应的成绩,无成绩者成绩列为空;`RIGHT JOIN`显示所有成绩及对应学生信息,无学生信息的成绩条目则为空。
1170 1
|
SQL 存储 关系型数据库
深入理解MySQL中的UPDATE JOIN语句
MySQL的UPDATE JOIN语句用于根据关联表的条件更新数据。示例中,历史记录表有用户账号字段,新增列用于存储用户名。通过UPDATE JOIN,一次性将账号转换为用户名。关键点包括准确的连接条件、谨慎使用WHERE子句以及在更新前进行测试。此操作提高了数据处理效率,但也需小心操作以防止数据错误。
1015 4
深入理解MySQL中的UPDATE JOIN语句
|
SQL 关系型数据库 MySQL
蓝易云 - Mysql join加多条件与where的区别
总的来说,JOIN和WHERE都是SQL查询的重要部分,但它们用于处理不同的问题:JOIN用于连接表,而WHERE用于过滤结果。
215 2

推荐镜像

更多