MySQL left join 右表是一个子查询查询非常慢 (右表的子查询本身查询很快,原来的查询没有加那一个子查询的话也很快的)

forwy 发布于 2016/10/31 16:56
阅读 716
收藏 1

MySQL left join 右表是一个子查询查询非常慢 (右表的子查询本身查询很快,原来的查询没有加那一个子查询的话也很快的)

请问,这是什么原因,子查询作右表示本来就会很慢的吗?

加载中
0
尚浩宇
尚浩宇
可能是关联的时候扫描了右表的全表,比如你用了groupby之类函数
尚浩宇
尚浩宇
回复 @forwy : 你可以解析一下sql,看看哪部分sql出了问题,还有一种办法就是为这个子查询创建一个视图,然后关联视图,希望能帮到你
forwy
forwy
我没有用group by之类的函数,但是我的这个子查询里面也用了一个 left join 来关联两个表
0
o
oneflower
你可以将执行计划打印出来看下,再分析,优化

参考自:
MySQL如何优化LEFT JOIN和RIGHT JOIN 
0
851228082
851228082

可能的原因:

右表是一个子查询,本身很快: 因为从物理表查询,用上了索引,所以查询快。

左表关联右表,查询慢:右表查询出来后,加载到内存中,没有索引了,只能走全表扫描,所以,进行关联匹配时,比较慢。

返回顶部
顶部