暂无图片
mysql关于多表join关联的执行流程
我来答
分享
佳佳
2021-08-23
mysql关于多表join关联的执行流程

mysql关于join关联的执行流程:

举个例子:
select * from table1 a join table2 b on a.id=b.id where a.name=xxx and b.sex=xxx;

问题:
1.像这样的SQL,首先会去把a.name=xxx and b.sex=xxx;过滤出来,然后再进行join吗?
还是先进行join,后过滤?

2.假如a表是驱动表,是不是需要在a.name 、b.sex、b.id上需要有索引,这样子优化最好。
(就是说要在过滤条件上加索引,还要在被驱动表的join列上加索引)

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
执剑者

1、如果on里面没有其他过滤条件,那么就先关联,然后对关联后的结果使用where条件进行过滤。

2、关联列上最好有索引。

暂无图片 评论
暂无图片 有用 0
佳佳
升级问题到: 潜在风险
暂无图片 评论
暂无图片 有用 0
obpilot
explain select * from table1 a join table2 b on a.id=b.id where a.name=xxx and b.sex=xxx;

结果输出来就知道了。

暂无图片 评论
暂无图片 有用 0

把执行计划贴出来就知道了.

暂无图片 评论
暂无图片 有用 0
chengang

在驱动表上建立条件过滤索引。在被驱动表上建立 关联字段索引

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏